Unity - 基本移动脚本
在本课中,我们将编写代码,使游戏对象根据用户的输入上下左右移动。这应该有助于我们更轻松地理解 Unity 脚本的工作流程。
请记住,每个游戏对象至少有一个组件 − Transform。特殊之处在于,游戏对象的 Transform 也显示为 Unity 脚本方面的变量,因此我们可以通过代码对其进行修改。这也不仅限于 Transform;Unity 中的所有组件都具有属性,可通过脚本中的变量访问。
让我们从移动脚本开始。创建一个新脚本,并将其命名为"Movement"。
现在,打开脚本,您应该会看到与上一课中相同的内容。
让我们创建一个名为 speed 的公共浮点变量。在 Unity 中将变量设为 public 具有很大的优势 −
变量在编辑器中显示为可修改字段,因此您无需手动调整代码中的值。
public class Movement : MonoBehaviour { public float speed; }
如果我们保存此脚本而不触及其他方法,它应该会在 Unity 中编译。
(您可以通过右下角的 图标查看编译时间。)
接下来,将脚本从 Assets 拖放到 GameObject 上。如果您操作正确,您应该在 GameObject 的属性中看到以下内容 −
由于速度值是可调的,不需要一直在代码中更改,因此我们可以使用 update() 方法代替 start()。
现在让我们考虑 Update 方法的目标 −
检查用户输入。
如果有用户输入,请读取输入的方向。
根据对象的速度和方向更改其变换的位置值。为此,我们将添加以下代码 −
void Update() { float h = Input.GetAxisRaw("Horizontal"); float v = Input.GetAxisRaw("Vertical"); gameObject.transform.position = new Vector2 (transform.position.x + (h * speed), transform.position.y + (v * speed));
现在让我们简要讨论一下代码。
首先,我们创建一个名为 h(代表水平)的浮点变量,其值由 Input.GetAxisRaw 方法给出。此方法返回 -1、0 或 1,具体取决于玩家在上下左右箭头上按下的哪个键。
Input 类负责以按键、鼠标输入、控制器输入等形式从用户那里获取输入。GetAxisRaw 方法稍微难以理解,因此我们稍后再讨论。
接下来,我们将 更新 gameObject 的位置到通过创建新的 Vector2 定义的新位置。Vector2 需要 2 个参数,分别是其 x 和 y 值。对于 x 值,我们提供了对象的当前位置和速度的总和,有效地在按键按下的每一帧中为其位置添加一些量。
保存此脚本并返回 Unity。一旦成功编译,Unity 将自动更新所有脚本,因此您不必一次又一次地重新附加脚本。
现在您已完成,将 GameObject 属性中的速度的值更改为 0.8。这很重要,因为较高的值会使玩家移动得太快。
现在,单击播放并查看您的第一个小游戏的实际运行情况!
尝试按下箭头键并四处移动。要停止游戏,只需再次按播放即可。您甚至可以实时调整速度,这样您就不必一直停止和启动它。
在下一课中,我们将学习刚体和碰撞。