29 用户输入之移动角色

在上一节中,我们讨论了如何获取用户输入,包括键盘和鼠标的基本操作。现在,我们将基于这些输入来控制角色的移动。这一节,我们将实现一个简单的角色移动系统,使玩家能够通过键盘输入来控制角色在场景中的位置。

准备工作

首先,确保你已经设置好了一个简单的场景,其中有一个可控制的角色。我们可以使用一个简单的3D角色模型,或者你可以使用Unity自带的Cube对象作为占位符。

创建角色

  1. 在Hierarchy面板中,右键点击选择 3D Object -> Cube,创建一个新立方体作为角色。
  2. 将立方体的 Position 属性设置为 $(0, 1, 0)$,使其悬浮在地面上。

角色移动脚本

接下来,我们将创建一个C#脚本来处理角色的移动。按照以下步骤进行:

  1. 在Project面板中,右键点击 Assets 文件夹,选择 Create -> C# Script,命名为 PlayerMovement
  2. 双击文件夹中的 PlayerMovement.cs 脚本,打开它进行编码。

以下是基本的角色移动代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
public float moveSpeed = 5f; // 移动速度

void Update()
{
// 获取用户输入
float moveHorizontal = Input.GetAxis("Horizontal"); // A/D或箭头键
float moveVertical = Input.GetAxis("Vertical"); // W/S或箭头键

// 构造移动方向
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

// 移动角色
transform.Translate(movement * moveSpeed * Time.deltaTime, Space.World);
}
}

代码解析

  • public float moveSpeed = 5f;:这是角色移动的速度,可以在Unity编辑器中调整。
  • Input.GetAxis("Horizontal"):这会返回用户按下的水平方向键(默认是 A 和 D 或者 左右箭头),值在 $[-1, 1]$ 之间。
  • Input.GetAxis("Vertical"):这会返回用户按下的垂直方向键(默认是 W 和 S 或者 上下箭头),同样值在 $[-1, 1]$ 之间。
  • Vector3 movement:我们创建一个新的向量,表示角色的移动方向。
  • transform.Translate(...):使用此函数将角色移动到新的位置。我们乘以 Time.deltaTime 以确保移动是平滑的。

应用脚本

PlayerMovement 脚本应用到创建的角色(立方体)上:

  1. 在Hierarchy面板中选择立方体。
  2. 在Inspector面板中,点击 Add Component,然后搜索并添加 PlayerMovement 脚本。

测试运行

  1. 点击Unity的播放按钮(Play)启动游戏模式。
  2. 使用 WASD 或者箭头键控制立方体的移动。

你应该看到立方体可以在场景中移动,根据你的输入改变其位置。

结论

在本节中,我们实现了一个基本的角色移动系统,通过用户输入来控制角色。这个系统为创建更复杂的游戏机制打下了基础,因为我们可以在此基础上添加更多的功能,例如角色的跳跃、攻击等。

在下一节中,我们将介绍如何使用 UI 按钮来控制角色移动,这将帮助你更好地理解 Unity 中的 UI 交互。

继续关注这系列教程,以便学习更多关于 Unity 游戏开发的知识!

29 用户输入之移动角色

https://zglg.work/unity-game-zero/29/

作者

IT教程网(郭震)

发布于

2024-08-22

更新于

2024-08-23

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论