首页 > 解决方案 > 停止移动后面向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);
    }
}

标签: c#unity3danimation

解决方案


推荐阅读