Unity3D 入门:最简单的控制视角,以及控制角色前进、转向的脚本

2023-10-22 11:10:18 浏览数 (2)

本文依然是 Unity3D 的入门篇。作为 Unity3D 的入门读者,你可能希望迅速让你能在游戏中操作你的视角,或者让角色移动。

创建脚本

作为入门篇,可能需要讲一下如何创建脚本。按下图,在 Unity 编辑器中:

  1. Hierarchy(层级)中选中主摄像机;
  2. Inspector(检查器)中选择最后那个 Add Component(添加组件);
  3. 选择 New Script(新建脚本)输入脚本名称,然后点击 Create and Add(创建并添加)。

接下来,我们需要去 Visual Studio 中编辑这个脚本。

点击菜单中的 Assets -> Open C# Project资源 -> 打开 C# 项目)。于是可以转到 Visual Studio 中编辑你的脚本文件。

最简代码

在 Visual Studio 中找到我们刚刚创建的 PlayerController 脚本。

其实就是脚本名加上 .cs 后缀。Unity 中 C# 脚本要求文件名必须匹配脚本的类名,因此,不要随便尝试改文件名或类名;就算改了,也要同步更新文件名和类名重新匹配,并重新在 Inspector 中添加新名称的脚本。

在脚本中添加如下代码:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

using UnityEngine; public class PlayerController : MonoBehaviour { private Transform transform; public float moveSpeed = 5f; public float rotateSpeed = 50f; void Start() { transform = GetComponent<Transform>(); } void Update() { float adValue = Input.GetAxis("Horizontal"); float wsValue = Input.GetAxis("Vertical"); float mValue = Input.GetAxis("Mouse X"); var moveDirection = (Vector3.forward * wsValue) (Vector3.right * adValue); transform.Translate(moveDirection.normalized * moveSpeed * Time.deltaTime, Space.Self); transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime * mValue); } }

Start 消息会在游戏对象(也就是前面我们添加了脚本的那个主摄像机)创建后,第一个 Update 消息执行前调用,可以用来做一些初始化。这里,我们拿到我们需要做变换的 Transform 组件(这里的组件也就是 Unity 编辑器的“检查器”中看到的一个个组件)。

Update 会尽量在每一帧执行一次,我们在这里执行一些需要每帧更新的逻辑。

我们做了这些事情:

  1. 定义了公共的两个字段 moveSpeedrotateSpeed 表示移动速度和转向速度。
  2. 通过 Input.GetAxis 获取不同种类的玩家输入。
  3. 通过玩家的输入计算 Transform 组件的更新差量,然后更新 Transform 组件。

关于在脚本当中公开属性以在编辑器中设置的更多细节,可阅读我的另一篇 Unity3D 入门博客:

  • Unity3D 入门:让 C# 脚本公开可在 Unity 编辑器中设置的属性 - walterlv

可以看以下效果(gif 文件有点大,多等等):

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/unity-starter-handle-base-player-input-for-movement.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected]) 。

0 人点赞