Menu
CoddyTech

添加向量

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

Vector3 可以存储在变量中,两个 Vector3 可以用 + 相加:x 与 x 相加,y 与 y 相加,z 与 z 相加。这样,两个推力就会合成一次移动。这个沙滩球每秒向前滚动 2 个单位,同时风每秒将它向右吹动 1 个单位:

Vector3 roll = new Vector3(0, 0, 2);
Vector3 wind = new Vector3(1, 0, 0);

void Update()
{
    Vector3 move = roll + wind;   // (1, 0, 2)
    transform.position += move * Time.deltaTime;
}

向量乘以一个数字时,向量的每个分量都会乘以这个数字:wind * 3 的结果是 (3, 0, 0),这相当于一场风暴;而 move * Time.deltaTime 会把每秒的移动量转换为这一帧的移动量。减法也会逐个分量进行,a - b 表示从点 b 移动到点 a 的步长。两个向量之间不能使用 *:roll * wind 无法编译。

challenge icon

挑战

简单

河水带着船前进,向上箭头会让船加上马达的动力。

  1. 在 Update() 中,以 Vector3 move = current; 开始。
  2. 当 Input.GetKey(KeyCode.UpArrow) 为 true 时,用 += 将 motor 加到 move 上。
  3. 将 move * Time.deltaTime 加到 transform.position 上。

按“开始”:船会向右漂移,并在你按住向上箭头时横渡河流。然后按“检查”。

亲手试试

using UnityEngine;

public class Boat : MonoBehaviour
{
    public Vector3 current = new Vector3(0, 0, 0);
    public Vector3 motor = new Vector3(0, 0, 0);

    void Update()
    {
        // 水流始终会带着船移动。
        // 按住向上箭头键时,马达也会推动船。
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器