方向
本课属于 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 方向。下一课将让对象朝着它们所面对的方向移动。
挑战
简单使用 Unity 中命名的方向键控制起重机的钩子。
- 在
Update()中,为每个方向键编写一个针对Input.GetKey的if。 - 每个条件都将对应方向乘以
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 在线编辑器