- Игрок (куб или спрайт с
Rigidbody2DиBoxCollider2D) - Финишный триггер (
BoxCollider2Dс флагомIsTrigger) - Ловушка (например, падающий шип или враг)
- Секретная дверь (объект, который должен исчезнуть или открыться)
- Аудио-менеджер (объект с компонентом
AudioSource)
public UnityEvent OnPlayerReachedFinish;Это событие должно вызываться, когда игрок входит в триггер финиша.
Не добавляйте в этот скрипт никаких прямых ссылок на другие объекты (Light, Door, Audio и т.д.)
- Проигрывание звука победы (вызвать
AudioSource.PlayOneShot()илиPlay()на аудио-менеджере) - Активацию ловушки — включить компонент, который делает ловушку опасной (например,
Behaviour.enabledилиGameObject.SetActive(true)) - Деактивацию секретной двери — отключить её
GameObject(или запустить анимацию открытия) - Отображение текста "Уровень пройден!" (используйте
TextMeshProилиUI.Text)
Создайте второй скрипт ScoreCounter.cs с публичным методом AddScore(int value). Привяжите его к тому же событию, но передайте параметр 5 очков.
Подсказка: UnityEvent позволяет выбирать метод с параметром int, поле для ввода значения появится в инспекторе.
- В скрипте
PlayerTriggerHandlerнет переменных типаLight,Door,AudioSource,Textи т.п. - Все реакции на событие настроены только через инспектор.
- При входе игрока в финишный триггер одновременно:
- Играет звук
- Активируется ловушка
- Исчезает / открывается дверь
- Появляется текст (и добавляются очки, если сделано доп. задание)
Не забудьте нажать «+» в поле события в инспекторе для каждого действия. Можно привязать несколько методов к одному событию — они выполнятся в порядке сверху вниз.