Триггеры
Триггеры — энтити , которые отвечают на запросы других энтити. Триггеры-браши могут быть созданы картоделами, а программисты могут превратить всё что угодно в триггер.
Картостроение
Существует много типов триггеров-брашей, которые могут быть созданы в редакторе карт Hammer; просмотрите Special:PrefixIndex/trigger для полного списка.
Одни из самых главных триггеров-брашей это trigger_once
, trigger_multiple
, trigger_look
and trigger_proximity
. У них всех одинаковые свойства и выводы:
tools/toolstrigger
- Каждый триггер должен использовать один материал.
- Filters
- Энтити-фильтры могут быть использованы для определения, что должен активировать триггер.
- Filter Flags
- Есть список флагов
, которые позволять триггеру быстро фильтровать без дополнительного энтити.
OnStartTouch
OnEndTouch
- Вывод происходит, когда любое энтити заходит в триггер или выходит из него. Этот энтити будет числится, как
!caller
. OnStartTouchAll
OnEndTouchAll
- Вывод происходит, как с выше перечисленным, но только, если отфильтрованные энтити не касаются триггера.
OnTouching
OnNotTouching
- Один из выводов будет запущен в ответ на
TouchTest
ввод. Все триггеры имеют эту команду, однако, немногие из них имеют эту команду в списке. FGD.
OnTrigger
- Срабатывает всякий раз, когда энтити соответствует всем критериям триггера.
![Warning.png](/w/images/thumb/c/cb/Warning.png/10px-Warning.png)
OnStartTouch
и OnStartTouchAll. Когда триггер, который не восстанавливается активен, он удалит себя с карты через 0.1 секунду. OnStartTouch
может быть активирован в этом промежутке.Смотрите также
- Браш-энтити
- Inputs и Outputs
- Фильры
- Special:PrefixIndex/trigger
- showtriggers_toggle, консольная команда, которая позволяет видеть триггер-браши.
Программирование
Все энтити могут отвечать на соприкосновение с другими энтити (смотрите Touch()
). Если вы хотите соприкосновения без коллизии, то у вас есть два выбора:
SetSolid(SOLID_NONE)
иAddSolidFlags(FSOLID_TRIGGER)
- Энтити будет отвечать на соприкосновения с вещами, которые походят через него.
CollisionProp()->UseTriggerBounds(true,iBloatSize)
- Энтити будет иметь триггер-бокс который продлевает его коробки коллизии
с помощью iBloatSize юнитов в X/Y и (iBloatSize/2) в +Z (-Z остается прежним). Триггер-бокс выравнен миром и будет работать независимо от твёрдости объекта и его группы коллизии. Он будет видим, как светящаяся, голубая коробочка, когда консольная команда
ent_bbox
использована. - Valve использует триггер-бокс для всех предметов. Их Их размер коллизии составляет 24, довольно большая цифра.
Браш
Что-бы сделать новый триггер-браш, который использует форму его браша заместо коробки коллизии, нужно взять CBaseTrigger
и вызватьInitTrigger()
.