Как сменить спрайт при движении(Unity 2d)?

Для смены спрайта при движении объекта в Unity 2D можно использовать следующий подход:

1. Создайте несколько спрайтов для каждого состояния объекта (например, спрайты для стояния, ходьбы влево и ходьбы вправо).

2. Определите переменную типа SpriteRenderer в скрипте вашего объекта:

[SerializeField] private SpriteRenderer spriteRenderer;

3. В методе Start() скрипта получите ссылку на компонент SpriteRenderer:

void Start()
{
    spriteRenderer = GetComponent<SpriteRenderer>();
}

4. В скрипте, отслеживающим движение объекта (например, в скрипте, обрабатывающем управление объектом), реализуйте проверку и изменение спрайта в зависимости от направления объекта.

Например, при движении влево вы можете использовать следующий код:

if (Input.GetKey(KeyCode.LeftArrow))
{
    spriteRenderer.sprite = leftSprite;
}

где leftSprite - это переменная, содержащая ссылку на спрайт для ходьбы влево.

Аналогично, при движении вправо можете использовать следующий код:

if (Input.GetKey(KeyCode.RightArrow))
{
    spriteRenderer.sprite = rightSprite;
}

где rightSprite - это переменная, содержащая ссылку на спрайт для ходьбы вправо.

5. Не забудьте присвоить нужные спрайты переменным leftSprite и rightSprite в редакторе Unity.

Альтернативный подход заключается в использовании анимаций. В этом случае, вы можете создать анимацию в Unity Animator и настроить переходы между разными состояниями (например, стояние, ходьба влево и ходьба вправо). Далее, в скрипте можно контролировать анимации при помощи функций SetTrigger() или SetBool().

Например, вы можете создать параметр в аниматоре под названием "IsWalking", который будет управлять анимацией движения. Затем в скрипте можно использовать следующий код:

if (Input.GetKey(KeyCode.LeftArrow) || Input.GetKey(KeyCode.RightArrow))
{
    animator.SetBool("IsWalking", true);
}
else
{
    animator.SetBool("IsWalking", false);
}

где animator - это переменная типа Animator, полученная из объекта через метод GetComponent<Animator>().

Таким образом, при движении объекта влево или вправо анимация будет воспроизводиться, а при остановке объекта анимация прекратится.

В зависимости от сложности и требований вашей игры или проекта, вы можете выбрать подход, который лучше подходит вам.