Unity - 基础移动脚本



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

记住,每个 GameObject 至少有一个组件——Transform。特别之处在于,gameObject 的 Transform 也显示为 Unity 脚本端的变量,因此我们可以通过代码修改它。但这并不局限于 Transform;Unity 中的所有组件都具有属性,这些属性可以通过脚本中的变量访问。

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

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

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

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

public class Movement : MonoBehaviour {
   public float speed;
}

如果我们在不修改其他方法的情况下保存此脚本,它应该会在 Unity 中编译。

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

接下来,将脚本从 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 属性中的speed值更改为例如 0.8。这很重要,因为较高的值会使玩家移动过快。

Speed Value

现在,点击播放并查看你的第一个小游戏!

Play

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

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

广告