CharacterController.Move 跳跃问题
CharacterController.Move Jumping Issue
我一直在使用 CharacterController.Move
来控制我的 fps 角色。
我 运行 遇到一个问题,当我按 w 或 s 并分别向下或向上看时,我的角色会小跳。我的代码:
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;
我一直在使用 CharacterController.Move
来控制我的 fps 角色。
我 运行 遇到一个问题,当我按 w 或 s 并分别向下或向上看时,我的角色会小跳。我的代码:
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;