Unity - Basic Movement Scripting

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

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

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

现在,打开脚本,你会看到你在上一课中看到的相同内容.

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

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

public class Movement : MonoBehaviour {
   public float speed;
}

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

(您可以通过右下角的缓冲区图标进行编译.)

接下来,将资源中的脚本拖放到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中的代码.

首先,我们创建一个名为

Input类负责从用户获取输入按键,鼠标输入,控制器输入等形式. GetAxisRaw方法稍微难以理解,所以我们稍后会再回过头来看.

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

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

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

速度值

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

Play

尝试按箭头键并四处移动.要停止游戏,只需再次按"播放"即可.您甚至可以实时调整速度,因此您无需一直停止和启动它.

在下一课中,我们将了解刚体和碰撞.