Unity - 基本运动脚本


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

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

让我们从我们的运动脚本开始。创建一个新脚本,并将其命名为“Movement”。

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

让我们创建一个名为speed的公共浮点变量。在 Unity 中公开变量有很大的优势 -

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

public class Movement : MonoBehaviour {
   public float speed;
}

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

缓冲(您可以通过右下角的图标看到它何时编译。)

接下来,将脚本从资源拖放到游戏对象上。如果你做得正确,这就是你应该在游戏对象的属性中看到的内容 -

拖放

由于速度值是可调的并且不需要一直在代码中更改,因此我们可以使用 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));

现在让我们讨论一下 breif 中的代码。

首先,我们创建一个名为h (水平)的浮点变量,其值由Input.GetAxisRaw方法给出。此方法返回 -1、0 或 1,具体取决于玩家在上/下/左/右箭头上按下的键。

Input 类负责以按键、鼠标输入、控制器输入等形式从用户获取输入。GetAxisRaw 方法稍微难以理解,因此我们稍后再讨论。

接下来,我们将游戏对象的位置更新为通过创建新的Vector2定义的新位置。Vector2 有 2 个参数,分别是它的x 和 y值。对于 x 值,我们提供对象当前位置及其速度的总和,在按键按下到其位置的每一帧中有效地添加一些量。

保存此脚本并返回 Unity。一旦编译成功,Unity 将自动更新所有脚本,因此您不必一次又一次地重新附加脚本。

现在您已完成,将GameObject 属性中的速度值更改为 0.8。这很重要,因为较高的值会让玩家移动得太快。

速度值

现在,单击“开始”并查看您的第一个小游戏的运行情况!

玩

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

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