Menu
CoddyTech

方向

本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 25 课,共 85 课。

Unity 为六个方向都提供了名称,每个方向的长度都是 1 个单位:

  • Vector3.right (1, 0, 0) 和 Vector3.left (-1, 0, 0)
  • Vector3.up (0, 1, 0) 和 Vector3.down (0, -1, 0)
  • Vector3.forward (0, 0, 1) 和 Vector3.back (0, 0, -1)

此外还有 Vector3.zero (0, 0, 0) 和 Vector3.one (1, 1, 1)。由于每个方向的长度都是 1 个单位,方向乘以速度,移动的距离就恰好等于该速度。这只蜗牛以每秒 0.5 个单位的速度背离摄像机爬行:

public float speed = 0.5f;

void Update()
{
    transform.position += Vector3.forward * speed * Time.deltaTime;
}

这和 new Vector3(0, 0, speed * Time.deltaTime) 的移动效果相同,但方向更容易读懂,也不容易选错轴。这些方向属于世界,而不是对象:即使蜗牛转过身,Vector3.forward 仍然是世界坐标中的 z 方向。下一课将让对象朝着它们所面对的方向移动。

challenge icon

挑战

简单

使用 Unity 中命名的方向键控制起重机的钩子。

  1. 在 Update() 中,为每个方向键编写一个针对 Input.GetKey 的 if。
  2. 每个条件都将对应方向乘以 speed * Time.deltaTime:Vector3.right、Vector3.left、Vector3.up 或 Vector3.down,例如 transform.position += Vector3.up * speed * Time.deltaTime;。

按下 “开始” 并操控钩子:它会滑动、升起和降下。然后点击 “检查”。

亲手试试

using UnityEngine;

public class Hook : MonoBehaviour
{
    public float speed = 2f;

    void Update()
    {
        // 按左右方向键:沿 x 轴滑动。按上下方向键:升高或降低。
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器