Я пытаюсь сделать сценарий контроллера для моего персонажа. Все работает нормально, но когда я нажимаю 2 кнопки движения одновременно, мой персонаж движется быстрее.
Если я нажимаю D
, он движется медленнее, чем если бы я нажимал D+S
или D+W
. Как я могу это исправить? Я хочу, чтобы мой персонаж двигался с одинаковой скоростью.
Код:
AnimationsCharacter animations;
CharacterController controller;
Transform camera;
Vector3 camForward;
Vector3 camRight;
Vector3 motion;
float horizontal;
float vertical;
float sprint;
float inputMagnitude;
float speed;
float defaultSpeed = 5;
float sprintSpeed = 10;
void Start()
{
controller = GetComponent<CharacterController>();
animations = GetComponent<AnimationsCharacter>();
camera = Camera.main.transform;
}
void FixedUpdate()
{
GetMoveInput();
}
public void GetMoveInput()
{
horizontal = Input.GetAxis("Horizontal");
vertical = Input.GetAxis("Vertical");
sprint = Input.GetAxis("Sprint");
if (horizontal != 0 || vertical != 0)
{
if(sprint != 0)
{
speed = sprintSpeed;
}
else
{
speed = defaultSpeed;
}
CalculateCamera();
Move();
}
}
public void CalculateCamera()
{
camForward = camera.forward;
camRight = camera.right;
camForward.y = 0;
camRight.y = 0;
camForward = camForward.normalized;
camRight = camRight.normalized;
}
public void Move()
{
motion = (camForward * vertical + camRight * horizontal);
inputMagnitude = new Vector2(horizontal, vertical).sqrMagnitude;
controller.Move(motion * speed * Time.deltaTime);
animations.AnimMovement(inputMagnitude);
transform.rotation = Quaternion.LookRotation(motion);
}
Я пробовал разные вещи, например /2
, если нажимались 2 кнопки. Похоже, я что-то не так делаю.