Skip to content

Latest commit

 

History

History
57 lines (41 loc) · 3.66 KB

File metadata and controls

57 lines (41 loc) · 3.66 KB

🛠️ Практическое задание: UnityEvents для слабой связанности

🎯 Задача: Система активации ловушек и наград

Вы разрабатываете 2D платформер. Создайте сцену, в которой есть:

  • Игрок (куб или спрайт с Rigidbody2D и BoxCollider2D)
  • Финишный триггер (BoxCollider2D с флагом IsTrigger)
  • Ловушка (например, падающий шип или враг)
  • Секретная дверь (объект, который должен исчезнуть или открыться)
  • Аудио-менеджер (объект с компонентом AudioSource)

📝 Требования к реализации

Напишите скрипт PlayerTriggerHandler.cs с одним UnityEvent:

public UnityEvent OnPlayerReachedFinish;

Это событие должно вызываться, когда игрок входит в триггер финиша.

Не добавляйте в этот скрипт никаких прямых ссылок на другие объекты (Light, Door, Audio и т.д.)


⚙️ Что нужно настроить в инспекторе (без изменения кода):

Используя только окно Инспектора, привяжите к событию OnPlayerReachedFinish следующие действия:

  1. Проигрывание звука победы (вызвать AudioSource.PlayOneShot() или Play() на аудио-менеджере)
  2. Активацию ловушки — включить компонент, который делает ловушку опасной (например, Behaviour.enabled или GameObject.SetActive(true))
  3. Деактивацию секретной двери — отключить её GameObject (или запустить анимацию открытия)
  4. Отображение текста "Уровень пройден!" (используйте TextMeshPro или UI.Text)

🔍 Дополнительное задание (со звездочкой)

Создайте второй скрипт ScoreCounter.cs с публичным методом AddScore(int value). Привяжите его к тому же событию, но передайте параметр 5 очков.

Подсказка: UnityEvent позволяет выбирать метод с параметром int, поле для ввода значения появится в инспекторе.


✅ Критерии успеха:

  • В скрипте PlayerTriggerHandler нет переменных типа Light, Door, AudioSource, Text и т.п.
  • Все реакции на событие настроены только через инспектор.
  • При входе игрока в финишный триггер одновременно:
    • Играет звук
    • Активируется ловушка
    • Исчезает / открывается дверь
    • Появляется текст (и добавляются очки, если сделано доп. задание)

💡 Подсказка

Не забудьте нажать «+» в поле события в инспекторе для каждого действия. Можно привязать несколько методов к одному событию — они выполнятся в порядке сверху вниз.


⭐ Если этот проект был полезен, поставьте звезду на GitHub!