I LEARN PROBUILDER
Войти Начать курс
19/20

Действия над объектом

Set Trigger Триггерная зона

Превращает меш в невидимую зону, которая ничего не держит, но сообщает скрипту, что в неё кто-то вошёл. Дверь, которая открывается сама; музыка, которая включается в комнате; чекпоинт — всё это триггеры.

  • МенюTools ProBuilder Object Set Trigger
  • РежимObject
  • Клавишанет

Что делает кнопка

Добавляет коллайдер, если его не было.

Включает у коллайдера флаг Is Trigger.

Назначает служебный полупрозрачный материал, чтобы зону было видно в редакторе.

В режиме Play и в собранной игре Renderer автоматически выключается — зона становится невидимой.

Set Trigger и Set Collider — это «служебные» объекты: в игре их не видно, но они работают.Set Triggerзона входа: OnTriggerEnterSet Colliderневидимый пандус поверх ступенейОба действия: добавляют коллайдер, ставят служебный материал, и в Play Mode гасят Renderer.Разница одна: у триггера включён Is Trigger — он не держит, а сообщает.

Триггер против коллайдера

Обычный коллайдер останавливает движение. Триггер пропускает сквозь себя, но вызывает события OnTriggerEnter, OnTriggerStay, OnTriggerExit.

Триггер бесполезен без скрипта: сам по себе он ничего не делает, только сообщает.

Практика формы

Триггерные зоны почти всегда делают простыми кубами: сложный меш-коллайдер в роли триггера дорог и капризен.

Для триггера, у которого включён Convex, форма упрощается автоматически — ещё одна причина не усложнять.

Разбор внутренних меню

Каждое поле — что задаёт, какие значения принимает и на что влияет.

Что появляется на объекте

Collider
MeshCollider или Box
Добавляется, если отсутствовал.
Is Trigger
вкл
Ключевой флаг: объект перестаёт быть препятствием.
Trigger Material
служебный материал
Полупрозрачная заливка только для редактора.
Renderer
гасится в Play
В игре зона невидима, отдельно отключать ничего не нужно.

Что нужно добавить самому

Скрипт с OnTriggerEnter
обязательно
Иначе вход в зону ничего не вызовет.
Rigidbody на одной из сторон
часто требуется
Физика Unity требует, чтобы хотя бы у одного участника был Rigidbody.
Слои и Layer Collision Matrix
по желанию
Чтобы триггер реагировал только на игрока, а не на каждый камешек.

Попробуйте сами

Пять минут в Unity — и инструмент перестанет быть кнопкой с непонятным названием.

  1. Постройте куб размером с дверной проём перед дверью.
  2. Нажмите Set Trigger — куб стал полупрозрачным.
  3. Посмотрите в инспектор: у коллайдера включён Is Trigger.
  4. Нажмите Play — зона исчезла с экрана, но осталась в сцене.
  5. Повесьте на неё скрипт с OnTriggerEnter и убедитесь, что событие приходит.

Приёмы

  • Называйте триггерные объекты с префиксом, например TRG_DoorEntry — в иерархии из сотни объектов это спасает.
  • Триггер-зона чуть больше самого объекта работает надёжнее: игрок не «проскакивает» её на скорости.
  • Держите триггеры отдельным родительским объектом — их удобно скрывать целиком во время моделирования.
  • Не забывайте снимать с триггеров флаг участия в запекании света: иначе их служебный материал повлияет на лайтмап.

Грабли

  • Триггер без скрипта — просто невидимый куб. Кнопка не создаёт логику, она создаёт зону.
  • События не приходят, если ни у одного из участников нет Rigidbody.
  • Сложный меш-триггер с включённым Convex упрощается до 255 граней и может «промахиваться».
  • Триггер, помеченный как статический для GI, портит запекание. Снимайте флаг.

Проверка

Четыре вопроса. Неверный ответ попадёт в банк ошибок и вернётся к вам в разделе «Практика».

1. Что отличает триггер от обычного коллайдера?

2. Что происходит с Renderer триггера в режиме Play?

3. Почему событие OnTriggerEnter может не приходить?

4. Какая форма предпочтительна для триггерной зоны?