于Unity 3D游戏的开发。游戏脚本需要3D模拟组合,该脚本将被写入阻力3D为了达到效果对象。

以下是一个小实例,使用Unity 3D实现一个可控制移动的小人。小人能够向前、向后、向左和向右移动。

1、通过 File - > New Scene 创建一个场景;

2、点击Create -> Create Empty 创建一个GameObject,它即是游戏对象;

3、在Inspector 面板里将此对象的名字改为 “hero” (记得按回车键),等一下再脚本中将通过此名字来与查找此对象,例如以下图:



4、点击Add Component 。选择Mesh -> Mesh Renderer ,例如以下图所看到的:





5、再次点击 Add Component,加入Mesh -> Mesh Filter





6、点击Mesh Filter 里的小button,在弹出的页面里选择Quad



7、在Project中创建目录Resources,并在当中创建四个目录:forward,back。right,left。这四个目录用于放置图片文件;

创建文件:2d.js,并使用编辑器打开,代码例如以下:

<strong><span style="font-size:18px;color:#ff0000;">#pragma strict

private var hero : GameObject;

//贴图数组
private var forward : Object[];
private var left : Object[];
private var right : Object[];
private var back : Object[]; //人物行走图计数器
private var counter : int; //每秒的帧数
private var fps : float = 2;
//限制帧的时间
private var time : float = 0;
//推断button是否被按下的布尔值
private var keyForward : boolean;
private var keyBack : boolean;
private var keyLeft : boolean;
private var keyRight : boolean; //当前贴图数组
private var anim : Object[];
//当前方向
private var pointer : int = 1;
//方向向量的值。即速度的大小
private var f : float = 0.001f; function Start() { hero = GameObject.Find("hero");
forward = Resources.LoadAll("woman/forward");
left = Resources.LoadAll("woman/left");
right = Resources.LoadAll("woman/right");
back = Resources.LoadAll("woman/back");
anim = forward;
counter = 0;
} function OnGUI(){
GUILayout.BeginHorizontal(); //四个button水平排列
keyForward = GUILayout.RepeatButton("向前");
keyLeft = GUILayout.RepeatButton("向左");
keyRight = GUILayout.RepeatButton("向右");
keyBack = GUILayout.RepeatButton("向后");
GUILayout.EndHorizontal();
//推断button的button
if(keyForward) {
setAnimation(1,forward);
hero.transform.Translate(Vector3.forward * f);
}
if(keyLeft) {
setAnimation(2,left);
hero.transform.Translate( - Vector3.right * f);
}
if(keyRight) {
setAnimation(3,right);
hero.transform.Translate(Vector3.right * f);
}
if(keyBack) {
setAnimation(4,back);
hero.transform.Translate(Vector3.back * f);
}//*/
//推断当前方向
switch(pointer) {
case 1:
hero.transform.Translate(-Vector3.forward * f);
break;
case 2:
hero.transform.Translate(-Vector3.right * f);
break;
case 3:
hero.transform.Translate(Vector3.right * f);
break;
case 4:
hero.transform.Translate(Vector3.forward * f);
break;
}
//响应动画
HandleAnimation(anim);
} function setAnimation(p : int,o:Object[]) {
pointer = p; //指定方向为 p
anim = o; //指定贴图数组
} function HandleAnimation(tex:Object[]) {
//计算限制帧时间
time += Time.deltaTime;
//超过限制帧则切换图片
if(time >= 1.0 / fps) {
counter++;
time = 0; if(counter >= anim.length){
counter = 0;
}
}
//将对应的贴图赋予主角对象
hero.renderer.material.mainTexture = tex[counter];
var rect : Rect = Rect(100,100,32,48);
GUI.DrawTexture(rect,tex[counter],ScaleMode.StretchToFill,true,0); //一旁的缩略对象 }
</span></strong>



8、保存后,将文件拖曳给hero;

9、如图,给Mesh Renderer选择材质



10、通过调整摄像机和hero的位置。使摄像机能看到hero;

11、执行:

版权声明:本文博主原创文章。博客,未经同意不得转载。

Unity 3D使用GameObject创建一个简单的可移动物体的更多相关文章

  1. Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...

  2. 如何创建一个简单的Visual Studio Code扩展

    注:本文提到的代码示例下载地址>How to create a simple extension for VS Code VS Code 是微软推出的一款轻量级的代码编辑器,免费,开源,支持多种 ...

  3. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  4. 如何创建一个简单的C++同步锁框架(译)

    翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架 目录 介绍 背景 临界区 & 互斥 & 信号 临界区 互斥 信号 更多信息 建立锁框架的目的 B ...

  5. Windows 8.1 应用再出发 (WinJS) - 创建一个简单项目

    前面几篇我们介绍了如何利用 C# + XAML 完成Windows Store App 功能的实现,接下来的几篇我们来看看如何利用 Html + WinJS 来完成这些功能. 本篇我们使用WinJS ...

  6. ADF_General JSF系列1_创建一个简单的JSF Application

    2015-02-17 Creatd By BaoXinjian

  7. IntelliJ IDEA 15 部署Tomcat及创建一个简单的Web工程

    一.部署Tomcat 二.创建一个简单的Web工程 2.1创建一个新工程 创建一个新工程 设置JDK及选择Web Application (创建的是Web工程) 点击Next,选择工作空间,起个工程名 ...

  8. Symfony2之创建一个简单的web应用

    Symfony2——创建bundle       bundle就像插件或者一个功能齐全的应用,我们在应用层上开发的应用的所有代码,包括:PHP文件.配置文件.图片.css文件.js文件等都会包含在bu ...

  9. 如何创建一个简单的struts2程序

    如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...

随机推荐

  1. MySQL将表a中查询的数据插入到表b中

    MySQL将表a中查询的数据插入到表b中 假设表b存在 insert into b select * from a; 假设表b不存在 create table b as select * from a ...

  2. cocostudio内存释放

    在使用cocostudio时,在释放内存时能够这样做: 在onExit()方法里加入例如以下: void LoadLayer::onExit() { // 释放本对象自己 removeFromPare ...

  3. 求1e11以内的素数

    有两种做法,一种是打表,另一种是直接求. 打表 将1e11每隔len(len=2000w)个数字统计一下该区间内素数的个数,比如cnt[1] 表示[1,len]以内有多少个素数,cnt[2]表示[le ...

  4. IIS设置允许下载.exe文件解决方法

    最近很多客户使用IIS服务器,然后提示返现宝下载无法找到等无法下载的问题. 返现宝是.exe安装文件,部分服务器或主机可能无法下载. 第一.如果是自己服务器或VPS请按如下设置: 1.设置MIME,让 ...

  5. 伪教练技术培训之殇-2013年9月江西IDC拓行榜与综述

    纠集几个人,然后培训所谓的教练技术培训. 培训的人一期又一期的参与,国学.佛学.超能量,无所不用其极,然后就是疯狂的拿人头,邀请朋友加盟. 有甚者还披上“科技”的外衣,用“水知道答案”这种早被公知指出 ...

  6. jstl的小问题

    jstl试了半天,终于知道错在哪里了! 这是jsp中的代码 从select中取得user_id:看清楚了 是user_id:小写第一位; <table width="50%" ...

  7. C#索引器的应用:自已写一个表格

    C#中索引器,在一个类中有很多的同一类型成员的时候,比较适用索引器. 环境:我们假设有一个动物园,里边有很多动物. 用法: 1.先定义一个类,这是成员的类型.在这里就是要定义一个Animal类: pu ...

  8. pygame系列_draw游戏画图

    说到画图,pygame提供了一些很有用的方法进行draw画图. ''' pygame.draw.rect - draw a rectangle shape draw a rectangle shape ...

  9. XML解析中的namespace初探

    原文:XML解析中的namespace初探 初学者在解析XML文件的时候最容易遇到的问题恐怕就是XML的namespace了,本文旨在对namespace做一个简要的介绍. namespace的意义无 ...

  10. poj 3311 状压DP

    经典TSP变形 学到:1.floyd  O(n^3)处理随意两点的最短路 2.集合的位表示,我会在最后的总结出写出.注意写代码之前一定设计好位的状态.本题中,第0位到第n位分别代表第i个城市,1是已经 ...