(第二章)Unity3D用键盘控制物体旋转

来源:互联网 发布:数据准确的重要性 编辑:程序博客网 时间:2024/06/14 01:56
今天博主学习了怎么控制一个物体旋转,运用到很简单的几句代码.
在update()中写入这样的代码.


void Update () {if(Input.GetKey(KeyCode.UpArrow)){//向上转//transform代表当前对象transform.Rotate(Vector3.right*Time.deltaTime*30);}if(Input.GetKey(KeyCode.DownArrow)){//向下转transform.Rotate(Vector3.left*Time.deltaTime*30);}if(Input.GetKey(KeyCode.LeftArrow)){//向左转transform.Rotate(Vector3.up*Time.deltaTime*30);}if(Input.GetKey(KeyCode.RightArrow)){//向右转transform.Rotate(Vector3.down*Time.deltaTime*30);}}




Update:程序每一帧都会调用Update这方法,一秒30帧,游戏是一桢一帧在绘画的。所以在Update中写入对对象的控制方法,程序就能每帧就接受到你的键盘操作进行对应的旋转.而且这是大部分的游戏行为代码在这里执行,除了物理代码。


transform:是指当前对象.


Roate:旋转public void Rotate (Vector3 eulerAngles)里面就唯一个参数,表示要旋转的方向度数,比如Vector3.down*Time.deltaTime*30代表向右旋转Time.deltaTime*30度,因为Untiy用的是左手定则,所以Vector3用的是down属性.


Time:Time 类包含一个非常重要的变量叫deltaTime.这个变量包含从上次调用Update 或FixedUpdate到现在的时间(根据你是放在Update函数还是FixedUpdate函数中).


如果你每帧添加或减少一个值,你需要乘以 Time.deltaTime .在你乘以 Time.deltaTime 的同时你必须明确:你是以每秒10米而不是每帧10米来移动物体.这样你的游戏就会以自己的节奏来运行而不是依赖帧的频率,因而也使游戏中的运动更容易掌握.(每秒10米)代码写法:

10.0 * Time.deltaTime




另外一个例子,如果你想要每隔一段时间增加光照范围.下面的代码实现的是每秒增加半径2个单位.
function Update() {    light.range += 2.0 * Time.deltaTime;}


当涉及到作用于刚体的力时,通常不乘以 Time.deltaTime .因为引擎已经为你处理了.




Vector3: 三维向量,表示3D的向量和点。这个结构用于在Unity传递3D位置和方向。它也包含做些普通向量运算的函数,下一章介绍




今天的学习到这,本人菜鸟,有不足之处还请路过高手进行补充.
0 0
原创粉丝点击