您的位置:首页 > 移动开发 > Unity3D

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

2014-10-18 13:55 676 查看
今天博主学习了怎么控制一个物体旋转,运用到很简单的几句代码.

在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位置和方向。它也包含做些普通向量运算的函数,下一章介绍

今天的学习到这,本人菜鸟,有不足之处还请路过高手进行补充.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d