前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity3D 入门:最简单的控制视角,以及控制角色前进、转向的脚本

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

作者头像
walterlv
发布2023-10-22 11:10:18
7560
发布2023-10-22 11:10:18
举报

本文依然是 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 入门博客:

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建脚本
  • 最简代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档