Trigger
Trigger - это нода нулевого размера, которая не имеет визуального представления и запускает события, когда:
- Она включается/выключается (вызывается событие Enabled).
- Ее трансформации изменяются (вызывается событие Position).
Node Trigger обычно добавляется как дочерняя нода к другой ноде, так что функции обработки событий будут запускаться при включении/выключении или трансформации родительской ноды.
Node Trigger может работать с процедурно созданными объектами World Clutter.
Node Trigger может использоваться, например, для воспроизведения звука грома при вспышке молнии: когда включена нода молнии, выполняется обработчик событий Enabled, который воспроизводит звук.
Дополнительная информация#
- Класс NodeTrigger для редактирования триггеров через API
- Видеоурок Как использовать Node Trigger для обнаружения изменений в состоянии объекта
Добавление Node Trigger#
Чтобы добавить новый Node Trigger через UnigineEditor, сделайте следующее:
-
В UnigineEditor в строке меню щелкните Create -> Logic -> Node Trigger.
-
Поместите Node Trigger в мир.
-
Добавьте Node Trigger в качестве дочерней к ноде, для которой должны выполняться обработчики событий: выберите Node Trigger в окне World Nodes Hierarchy и перетащите ее внутрь требуемой ноды.
Редактирование Node Trigger#
Чтобы отредактировать Node Trigger, выберите ее и перейдите на вкладку Node окна Parameters.
Обработка событий#
Редактирование ноды триггера включает в себя реализацию и указание обработчиков событий Enabled и Position, которые выполняются при включении или позиционировании ноды Trigger соответственно.
Обработчик события должен принимать как минимум 1 аргумент типа NodeTrigger. Кроме того, он может принимать еще 2 аргумента любого типа.
Обработчики событий задаются через указатели, указанные при подписке на следующие события: Enabled и Position.
// subscribe to the Enabled event when the trigger is enabled
nodeTrigger->getEventEnabled().connect(enabled_event_handler);
// subscribe to the Position event when the trigger's transformation is changed
nodeTrigger->getEventPosition().connect(position_event_handler);
// subscribe to the Enabled event when the trigger is enabled
nodeTrigger.EventEnabled.Connect(enabled_event_handler);
// subscribe to the Position event when the trigger's transformation is changed
nodeTrigger.EventPosition.Connect(position_event_handler);