- Unity教程
- 统一 - 主页
- Unity - 简介
- Unity - 安装和设置
- Unity - 创建精灵
- Unity - 修改精灵
- 变换和对象父子关系
- Unity - 内部资产
- Unity - 保存和加载场景
- Unity - 基本运动脚本
- Unity - 理解碰撞
- Unity - 刚体和物理
- Unity - 自定义碰撞边界
- 了解预制件和实例化
- Unity - 游戏对象销毁
- Unity - 协程
- Unity - 控制台
- Unity - 音频简介
- Unity - 从 UI 开始
- Unity - 按钮
- Unity - 文本元素
- Unity - 滑块
- Unity - 材质和着色器
- Unity - 粒子系统
- Unity - 使用资源商店
- Unity 有用资源
- Unity - 快速指南
- Unity - 有用的资源
- 团结-讨论
Unity - 基本运动脚本
在本课中,我们将编写代码,使游戏对象根据用户的输入向上、向下、向左和向右移动。这应该可以帮助我们更轻松地理解 Unity 脚本编写的工作流程。
请记住,每个 GameObject 至少有一个组件 - Transform。特殊之处在于游戏对象的变换也在 Unity 的脚本端显示为变量,因此我们可以通过代码对其进行修改。这也不限于 Transform;Unity 中的所有组件都有属性,可以通过脚本中的变量访问这些属性。
让我们从我们的运动脚本开始。创建一个新脚本,并将其命名为“Movement”。
现在,打开脚本,您应该会看到与上一课中看到的内容相同的内容。
让我们创建一个名为speed的公共浮点变量。在 Unity 中公开变量有很大的优势 -
该变量在编辑器中显示为可修改字段,因此您不必手动调整代码中的值。
public class Movement : MonoBehaviour { public float speed; }
如果我们保存这个脚本而不触及其他方法,它应该在 Unity 中编译。
(您可以通过右下角的图标看到它何时编译。)
接下来,将脚本从资源拖放到游戏对象上。如果你做得正确,这就是你应该在游戏对象的属性中看到的内容 -
由于速度值是可调的并且不需要一直在代码中更改,因此我们可以使用 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定义的新位置。Vector2 有 2 个参数,分别是它的x 和 y值。对于 x 值,我们提供对象当前位置及其速度的总和,在按键按下到其位置的每一帧中有效地添加一些量。
保存此脚本并返回 Unity。一旦编译成功,Unity 将自动更新所有脚本,因此您不必一次又一次地重新附加脚本。
现在您已完成,将GameObject 属性中的速度值更改为 0.8。这很重要,因为较高的值会让玩家移动得太快。
现在,单击“开始”并查看您的第一个小游戏的运行情况!
尝试按箭头键并四处移动。要停止游戏,只需再次按“播放”即可。您甚至可以实时调整速度,这样您就不必一直停止和启动它。
在下一课中,我们将学习刚体和碰撞。