Idle face direction/ new unity input system/ Unity 2D
Посоветуйте, что нужно использовать в коде для определения вектора движения спрайта?
Например у меня есть анимированный спрайт и он двигается по полю следующим образом:
void Update()
{
rigidBody.velocity = new Vector2(playerPositionX * moveSpeed, playerPositionY * moveSpeed);
SetAnimationMovementDirrection();
}
public void Move(InputAction.CallbackContext context)
{
playerPositionX = context.ReadValue<Vector2>().x;
playerPositionY = context.ReadValue<Vector2>().y;
}
void SetAnimationMovementDirrection()
{
playerAnimator.SetFloat("movementX", rigidBody.velocity.x);
playerAnimator.SetFloat("movementY", rigidBody.velocity.y);
}
Как получить направление его движения, чтобы я мог присвоить этим значениям Idle анимацию?
Ответы (1 шт):
Обычно в коде держат свойство, что-то типа
bool facedRight = false
И опираются на неё.
И нужно менять её значение в зависимости от того куда было движение по оси X (Input.GetAxis("Horizontal"))
Уже на основе этой переменной можно ориентироваться.
Вместо right/left можно использовать соответственно facedForward/facedBackward, чтобы небыло некоторой непонятки.
А можно сразу по дефолту задать направление вперёд и сделать метод flip который просто будет зеркально отражать спрайт по оси x, то есть просто умножать на -1