[Unity3D]人物的转向


记录学习Unity制作游戏时的一些基本代码。

准备工作

Unity - Scripting API:

API 官方文档地址
Quaternion https://docs.unity3d.com/ScriptReference/Quaternion.html
Quaternion.LookRotation https://docs.unity3d.com/2017.2/Documentation/ScriptReference/Quaternion.LookRotation.html
Vector3.RotateTowards https://docs.unity3d.com/ScriptReference/Vector3.RotateTowards.html
Transform.rotation https://docs.unity3d.com/540/Documentation/ScriptReference/Transform-rotation.html

关于人物的移动

参照:[Unity3D]人物的移动

人物的转向

代码(在人物的移动上所增加)

在PlayerInput的FixedUpdate()中新增调用PlayerController下的RotateCharacter

using Unit
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D中,人物移动并转向可以通过以下步骤实现: 1. 创建一个空的 GameObject,将角色模型作为其子对象,然后将脚本组件添加到空的 GameObject 上。 2. 在脚本中,使用 Input.GetAxis 函数获取水平和垂直输入值。将这些值存储在 Vector2 变量中。 3. 使用 Vector2 变量中的值来计算人物的移动向量。可以使用 Transform.Translate 函数将人物移动到新的位置。 4. 使用 Vector2 变量中的值来计算人物的旋转角度。可以使用 Transform.Rotate 函数将人物旋转到新的角度。 这是一个示例脚本,它可以实现基本的人物移动和旋转: ``` using UnityEngine; public class CharacterController : MonoBehaviour { public float speed = 5.0f; void Update() { float horizontalInput = Input.GetAxis("Horizontal"); float verticalInput = Input.GetAxis("Vertical"); Vector2 moveInput = new Vector2(horizontalInput, verticalInput).normalized; Vector3 moveVector = new Vector3(moveInput.x, 0, moveInput.y) * speed * Time.deltaTime; transform.Translate(moveVector, Space.Self); if (moveInput.magnitude > 0) { float targetAngle = Mathf.Atan2(moveInput.x, moveInput.y) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, targetAngle, 0); } } } ``` 在这个示例脚本中,我们使用 Input.GetAxis 函数获取水平和垂直输入值,并将它们存储在 Vector2 变量 moveInput 中。然后,我们使用 moveInput 计算人物的移动向量 moveVector,并使用 Transform.Translate 函数将人物移动到新的位置。 如果 moveInput.magnitude 大于0,说明人物正在移动,我们使用 Mathf.Atan2 函数计算目标旋转角度 targetAngle,并使用 Transform.Rotate 函数将人物旋转到新的角度。 注意,我们使用 Space.Self 参数将移动向量 moveVector 应用到人物的本地空间中,这样可以确保移动方向和人物的朝向一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值