添加向量
本课属于 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 无法编译。
挑战
简单河水带着船前进,向上箭头会让船加上马达的动力。
- 在
Update()中,以Vector3 move = current;开始。 - 当
Input.GetKey(KeyCode.UpArrow)为 true 时,用+=将motor加到move上。 - 将
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 在线编辑器