旋转不整洁的3d控制器问题

问题描述

ive按照第三人称角色控制器上的教程进行操作,但我可以使用它,但是他没有包含摄像头功能,现在我尝试自己添加它们,但是按[w]键时效果不太好,我稍微向左移动当我按“ s”时,我会旋转。 medium article播放一段视频,以了解发生了什么。

我使用了本教程和代码https://youtu.be/EE0Rx-wJa5A

using UnityEngine;

public class Movement : MonoBehavIoUr
{
    [Serializefield] private float movementSpeed = 2f;
    private float currentspeed = 0f;
    private float speedSmoothVeLocity = 0f;
    private float speedSmoothTime = 0.1f;
    private float rotationSpeed = 0.1f;
    private float gravity = 3;

    private Transform mainCameraTransform = null;

    private CharacterController controller = null;
    private Animator animator = null;

    private void Start ()
    {
        controller = GetComponent<CharacterController>();
        animator = GetComponent<Animator>();

        mainCameraTransform = Camera.main.transform;
    }

    private void Update () 
    {
        Move();
    }

    private void Move ()
    {
        Vector2 movementInput = new Vector2(Input.GetAxisRaw("Horizontal"),Input.GetAxisRaw("Vertical"));

        Vector3 forward = mainCameraTransform.forward;
        Vector3 right = mainCameraTransform.right;

        forward.y = 0;


        forward.normalize();
        right.normalize();

        Vector3 desiredMoveDirection = (forward * movementInput.y + right * movementInput.x).normalized;
        Vector3 gravityVector = Vector3.zero;
        
        if(!controller.isGrounded)
        {
            gravityVector.y -= gravity;
        }

        if(desiredMoveDirection != Vector3.zero)
        {
            transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(desiredMoveDirection),rotationSpeed);
            
        }
        
        float targetSpeed = movementSpeed * movementInput.magnitude;
        currentspeed = Mathf.Smoothdamp(currentspeed,targetSpeed,ref speedSmoothVeLocity,speedSmoothTime);

        controller.Move(desiredMoveDirection * currentspeed * Time.deltaTime);

        controller.Move(gravityVector * Time.deltaTime);

    }


}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)