每秒转动
本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 11 课,共 85 课。
transform.Rotate(x, y, z) 会让 GameObject 分别绕各个轴旋转指定的角度。在 Update() 中调用时,它会在每一帧稍微旋转一点,因此对象会一直旋转。
但是,一秒有多少帧?在速度较快的电脑上可能是 120 帧,在手机上可能是 30 帧。直接使用 transform.Rotate(0, 0, 5),物体在速度较快的设备上会旋转得快 4 倍。Unity 的解决方法是 Time.deltaTime:它表示距离上一帧经过的秒数。将速度乘以它,速度就表示每秒的速度,而且在任何设备上都一样。
这里,轮子每秒绕 z 轴旋转 45 度:
public float speed = 45f;
void Update()
{
transform.Rotate(0, 0, speed * Time.deltaTime);
}每秒 60 帧时,Time.deltaTime 大约是 0.0167,因此每一帧旋转 45 * 0.0167,大约是 0.75 度,60 帧加起来就是 45 度。每秒 30 帧时,每一帧旋转的角度会是两倍,但一秒加起来仍然是 45 度。
挑战
简单让立方体每秒绕 y 轴旋转 speed 度。
- 在
Update()中,调用transform.Rotate(x, y, z)。 - 将
speed * Time.deltaTime放在中间的数字位置,也就是 y 的位置,x 和 z 的位置填0。上面的转轮绕 z 轴旋转,这个立方体绕 y 轴旋转。
按“运行”:立方体每秒旋转四分之一圈。然后按“检查”。
亲手试试
using UnityEngine;
public class Spinner : MonoBehaviour
{
public float speed = 90f;
void Update()
{
// 在这里让立方体绕 y 轴旋转
}
}
Unity 脚本基础中的所有课
自己练习: Unity 在线编辑器