Здравствуйте. Сделал движение персонажа в 3d, но получается так, что когда персонаж передвигается диагонально, а не в конкретное направление, то его скорость становится меньше. В интернете не нашел похожей проблемы, не пойму в чем дело.
Делаю под мобильные, поэтому использую Input System для джойстика.
private void Start()
{
controller = GetComponent<CharacterController>();
cameraMain = Camera.main.transform;
anim = GetComponent<Animator>();
animAimRun = false;
}
void Update()
{
Vector2 movementInput = playerInput.PlayerMain.Move.ReadValue<Vector2>(); // движение джойстика
Vector3 move = (cameraMain.forward * movementInput.y + cameraMain.right * movementInput.x);
controller.Move(move * Time.deltaTime * playerSpeed); // x z
anim.SetFloat("inputX", movementInput.x);
anim.SetFloat("inputY", movementInput.y);
if (movementInput != Vector2.zero) // rotation
{
float targetAngle = Mathf.Atan2(move.x, move.z) * Mathf.Rad2Deg;
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);
transform.rotation = Quaternion.Euler(0f, angle, 0f);
}
}
Анимацию сделал так:
Буду рад любой помощи или просто подсказке, в чем дело.
Спасибо