Unity - 基本运动脚本

  • 简述

    在本课中,我们将编写代码,使游戏对象根据用户的输入上下左右移动。这应该有助于我们更轻松地理解 Unity 脚本的工作流程。
    请记住,每个 GameObject 至少有一个组件 -Transform。 特殊之处在于,游戏对象的变换也显示为 Unity 脚本端的变量,因此我们可以通过代码对其进行修改。这也不限于变换;Unity 中的所有组件都有属性,这些属性可以通过脚本中的变量访问。
    让我们从我们的运动脚本开始。创建一个新脚本,并将其命名为“Movement”。
    现在,打开脚本,您应该会看到与上一课相同的内容。
    让我们创建一个名为的公共浮点变量speed。 制作变量public在 Unity 中有很大的优势 -
    • 该变量在编辑器中显示为可修改字段,因此您不必手动调整代码中的值。
    
    public class Movement : MonoBehaviour {
       public float speed;
    }
    
    如果我们保存这个脚本而不触及其他方法,它应该在 Unity 中编译。
    缓冲(您可以通过右下角的图标查看它何时编译。)
    下一个,drag and drop从资产到游戏对象的脚本。如果你做得正确,这就是你应该在 GameObject 的属性中看到的内容 -
    拖放
    由于速度值是可调的,并且不需要一直在代码中更改,我们可以使用 update() 方法代替 start()。
    现在让我们考虑更新方法的目标 -
    • 检查用户输入。
    • 如果有用户输入,请阅读输入方向。
    • 根据对象的速度和方向更改对象变换的位置值。为此,我们将添加以下代码 -
    
    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 方法有点难以理解,所以我们稍后再讨论。
    接下来,我们是updating我们的游戏对象的位置通过创建一个新的定义的新位置Vector2. Vector2 有 2 个参数,它们是x and y值分别。对于 x 值,我们提供对象的总和current位置及其speed,有效地在每帧将键按下到其位置时添加一些量。
    保存此脚本并返回 Unity。一旦编译成功,Unity 将自动更新所有脚本,因此您不必一次又一次地重新附加脚本。
    完成后,更改speed在 GameObject 的属性中说 0.8。这很重要,因为较高的值会使玩家移动得太快。
    速度值
    现在,点击Play看看你的第一个小游戏在行动!
    玩
    尝试按箭头键并四处移动。要停止游戏,只需再次按播放。您甚至可以实时调整速度,这样您就不必一直停止和启动它。
    在下一课中,我们将学习刚体和碰撞。