c# - 停止移动后面向z方向的字符?
问题描述
我在保持角色面对他所面对的同一方向时遇到问题,它总是转向世界坐标的 z 方向,我希望找到解决这个问题的方法。
我试图通过使用来阻止它Quaternion.LookRotation()
,Vector3.RotateToward()
但是当他停止时,他仍然以空闲动画旋转到世界 z 方向。
public class MovementController : MonoBehaviour
{
Vector3 _CharacterDirection;
Quaternion _CharacterRotation=Quaternion.identity;
Animator _CharacterAnim;
Rigidbody _CharacterRigidbody;
public float TurnSpeed;
void Start()
{
_CharacterAnim = GetComponent<Animator>();
_CharacterRigidbody = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
CharacterMovement();
}
void CharacterMovement()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
_CharacterDirection.Set(h, 0, v);
_CharacterDirection.Normalize();
bool _IsHorizontalChange = !Mathf.Approximately(h, 0f);
bool _IsVerticalChange = !Mathf.Approximately(v, 0);
bool _IsWalking = _IsHorizontalChange || _IsVerticalChange;
_CharacterAnim.SetBool("IsWalking", _IsWalking);
Vector3 _DesairdForward = Vector3.RotateTowards(Vector3.forward, _CharacterDirection, TurnSpeed * Time.deltaTime, 0);
_CharacterRotation = Quaternion.LookRotation(_DesairdForward);
_CharacterRigidbody.MovePosition(_CharacterRigidbody.position + _CharacterDirection * Time.deltaTime);
_CharacterRigidbody.MoveRotation(_CharacterRotation);
}
}
解决方案
推荐阅读
- java - 如何检查包含数字和字母的字符串是否在Java中的两个值之间?
- mysql - 对当月周数中的字段总和进行分组
- python - 如何获取文本文件的一列
- angular - 错误:Angular JIT 编译失败:'@angular/compiler' 未加载!在使用 AOT 在 Angular 9 中创建动态组件时
- ruby-on-rails - 将文件夹参数添加到 Rails 简单表单上传
- php - 在 php 中显示 youtube 的私人视频
- ubuntu - guile-config 无法运行
- r - 如何在 simmer R 中设置初始队列长度(queue_count)?
- java - 通用记录到 POJO
- keyboard - 将键盘扫描代码解析为实际输入的字符