Поменять спрайты игрока во время его нахождения в зоне триггера

Рейтинг: -1Ответов: 1Опубликовано: 02.04.2023

В моей TopDown 2D-игре есть Режим битвы. Сделано это по типу области с параметром OnTrigger - пока игрок находится в зоне триггера, происходит сражение. Мне хотелось бы расширить этот режим, добавив следующее: Когда игрок находится в режиме сражения, менять его спрайт на другой (затемненный с красной обводкой). Отмечу, что у объекта рендеринг из аниматора, поэтому нужно подключить и другие анимации. Это может быть похоже на то, как это выглядит в видеоигре Deltarune, когда там персонаж попадает в режим Столкновение (тот же режим битвы). Я даже близко не знаю, как это можно сделать. Буду благодарен любым ответам!

Ответы

▲ 0Принят

При входе в зону битвы void OnTriggerEnter2D(Collider2D collision)

При выходе void OnTriggerExit2D(Collider2D collision)

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.gameObject.CompareTag("BattleZone"))
    {
        gameObject.GetComponent<SpriteRenderer>().sprite = inBattleSprite;
    }
}

private void OnTriggerExit2D(Collider2D collision)
{
    if (collision.gameObject.CompareTag("BattleZone"))
    {
        gameObject.GetComponent<SpriteRenderer>().sprite = normalSprite;
    }
}

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