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

→ Ссылка