Unity - 基本移动脚本

在本课中,我们将编写代码,使游戏对象根据用户的输入上下左右移动。这应该有助于我们更轻松地理解 Unity 脚本的工作流程。

请记住,每个游戏对象至少有一个组件 − Transform。特殊之处在于,游戏对象的 Transform 也显示为 Unity 脚本方面的变量,因此我们可以通过代码对其进行修改。这也不仅限于 Transform;Unity 中的所有组件都具有属性,可通过脚本中的变量访问。

让我们从移动脚本开始。创建一个新脚本,并将其命名为"Movement"。

现在,打开脚本,您应该会看到与上一课中相同的内容。

让我们创建一个名为 speed 的公共浮点变量。在 Unity 中将变量设为 public 具有很大的优势 −

  • 变量在编辑器中显示为可修改字段,因此您无需手动调整代码中的值。

public class Movement : MonoBehaviour {
   public float speed;
}

如果我们保存此脚本而不触及其他方法,它应该会在 Unity 中编译。

(您可以通过右下角的 Buffer图标查看编译时间。)

接下来,将脚本从 Assets 拖放到 GameObject 上。如果您操作正确,您应该在 GameObject 的属性中看到以下内容 −

Drag and Drop

由于速度值是可调的,不需要一直在代码中更改,因此我们可以使用 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。这很重要,因为较高的值会使玩家移动得太快。

速度值

现在,单击播放并查看您的第一个小游戏的实际运行情况!

播放

尝试按下箭头键并四处移动。要停止游戏,只需再次按播放即可。您甚至可以实时调整速度,这样您就不必一直停止和启动它。

在下一课中,我们将学习刚体和碰撞。