CharacterController.Move 跳跃问题

CharacterController.Move Jumping Issue

我一直在使用 CharacterController.Move 来控制我的 fps 角色。 我 运行 遇到一个问题,当我按 ws 并分别向下或向上看时,我的角色会小跳。我的代码:

using UnityEngine;
using Unity.Netcode;
public class PlayerMovement : NetworkBehaviour
{    
    public CharacterController controller;
     
    public float speed = 12f;

    // Update is called once per frame
    void Update ()
    {
      if(IsOwner)
      {

        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");
      
        Vector3 move = transform.right * x + transform.forward * z;
        controller.Move(move.normalized * speed * Time.deltaTime);
      }
    }
}

网上查不到相关资料,所以才来的。 我希望你能帮助我:)

以下代码行使用变换的旋转来确定移动方向。如果您向上或向下看,那么您的 transform.forward 也可能指向上方或下方。

   Vector3 move = transform.right * x + transform.forward * z;

因此,当您向上看并应用正 z 值时,您的运动将使您向前移动 (朝着您正在看的方向,实际上是向上)。由于重力,当您的角色向上移动并被重力拉下时,您可能会进行微小的“跳跃”。

有几种方法可以解决这个问题,但一个可能的解决方法是删除移动向量的 y 分量:

    move.y = 0f;