Menu
CoddyTech

每秒转动

本课属于 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 度。

challenge icon

挑战

简单

让立方体每秒绕 y 轴旋转 speed 度。

  1. 在 Update() 中,调用 transform.Rotate(x, y, z)。
  2. 将 speed * Time.deltaTime 放在中间的数字位置,也就是 y 的位置,x 和 z 的位置填 0。上面的转轮绕 z 轴旋转,这个立方体绕 y 轴旋转。

按“运行”:立方体每秒旋转四分之一圈。然后按“检查”。

亲手试试

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        // 在这里让立方体绕 y 轴旋转
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器