📜  Unity-基本运动脚本

📅  最后修改于: 2020-10-29 04:18:37             🧑  作者: Mango


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

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

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

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

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

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

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));

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

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

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

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

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

至此,将GameObject属性中的speed值更改为0.8。这很重要,因为更高的值会使玩家移动得太快。

速度值

现在,点击播放,看看您的第一个小型游戏正在运行!

玩

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

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