Блокировка пути. Шлюз

В процессе игры, вы не раз видели примеры перекрытого пути - подъемник на заправке в кампании "Нет милосердию", шлюз в кампании "Смертельный звон", микроавтобус пробивающий вам путь в "Смерть в воздухе" и другие. Некоторые из вас пытались это повторить в своих работах, но получалось не очень. Так как же реализованы эти красивые вещи? Этим вопросом мы сейчас и займемся.

Разбираться с этим не простым вопросом мы начнем со шлюза. Задача выживших: перекрыть шлюз и перейти по получившемуся мосту на другую сторону. Задача для маппера - грамотно перекрыть навигацию и открыть ее, после опускания шлюза.
Начинаем работу с создание небольшого канала и размещения в нем модели шлюзовых ворот в виде Entity-объекта prop_dynamic. Незабываем дать ему имя - sluicegate_bridge
Канал и шлюз


Внимание! Никогда не давайте элементам названия "от балды"! Названия должны быть "говорящие". При не соблюдении этого простого правила, при дальнейшей работе вы сами запутаетесь в собственном проекте.

Запускать шлюз будем с помощью кнопки, используем для нее вот такую модель и присвоим имя sluicegate_button.
Кнопка запуска


При нажатии кнопки, можно вызвать искры - это зрелищно и эффектно. Кидаем на карту env_spark (sluicegate_button_spark) для искр и один ambient_generic (sluicegate_button_spark_sound) для звука
Расположение Entity-объектов


При старте и остановке таких массивных ворот логична тряска, поэтому ставим на карту Entity-объект env_shake, с именем sluicegate_bridge_shake.
Расположение Entity-объектов


Так же не плохо бы запустить звуковые эффекты: сирена при запуске шлюза, звуки движения и остановки. Кидаем на карту еще три ambient_generic с именами alarm_sound, sluicegate_bridge_move_sound и sluicegate_bridge_stop_sound одной группой.
Расположение Entity-объектов


Подбираем звук для сирены. Например вот этот - floodgate_klaxon, звук резкий и хлесткий, но вот не задача, он не умеет повторяться, чтобы исправить это кидаем на карту logic_timer с именем timer_alarm_sound для периодического запуска звука.
Расположение Entity-объектов


Если на этом этапе скомпилировать карту (естественно создав Sky, light_environment и точки спауна игроков), то выяснится один очень неприятный момент. Оказывается шлюз не имеет "физических свойств" и его можно спокойно проходить на сквозь. И, конечно же, его не получится перейти, вы просто упадете вниз.
Прохождение насквозь


Чтобы исправить эту досадливость, сделаем мостик и перила шлюза из Clip-брашей.
Мостик из Clip-брашей


Теперь канал можно перейти по невидимому мосту. Что порождает еще один вопрос - как можно выйти мост, если ворота закрыты и мост поднят?
"Левитация" игроков


Решается это еще одним брашем, окрашенным текстурой invisible, расположенным в месте ворот. Этот браш воспрепятствует проходу на мост и будет удален после того, как откроются ворота. Обязательно сделайте его повыше, что бы его нельзя было перепрыгнуть. Превратите его в Entity-объект func_brush с именем sluicegate_bridge_way_block.
Браш-блокиратор пути


Теперь у нас есть все, что бы мы могли создать мост из шлюзовых ворот. Начинаем настраивать наши Entity-объекты и строить логические цепочки работы. Создадим браш окрашенный текстурой invisible, превратим его в Entity-объект func_button с именем sluicegate_button_logic и накроем им нашу кнопку.
Кнопка


Откройте свойства func_button, перейдите во вкладку "Outputs" и наберите следующий список команд:
Список Outputs


Перейдите к logic_timer , перейдите во вкладку "Outputs" и наберите команду:
Список Outputs


Перейдите к нашему мосту prop_dynamic , перейдите во вкладку "Outputs" и наберите список команд:
Список Outputs


С этой работой мы закончили. После того, как вы настроите навигацию на своей карте, вы увидите, что зараженные бегают по вашему невидимому мосту да и боты выживших могут телепортироваться на этот мост. Это происходит из-за того, что на Clip-мосту расположены навигационные зоны используемые NPC для ориентации в пространстве. Что бы избежать этой неприятности, на нашу карту нужно добавить три элемента. Два Entity-объекта func_nav_blocker и один Entity-объект logic_auto.

Возьмите текстуру "trigger" и создайте браш равный по размерам нашему func_brush. Превратите его в Entity-объект func_nav_blocker с именем sluicegate_bridge_way_nav_block.
func_nav_blocker


Переместите func_nav_blocker так, чтобы он совпал с func_brush, скопируйте и вставьте на другом конце моста в том же положении. Вы должны получить два объекта func_nav_blocker с одним именем.
Расположение func_nav_blocker


Как признает компания VALVe, с Entity-объектом func_nav_blocker имеется проблема. Он может не перекрыть пути автоматически, поэтому мапперы от VALVe советуют переключать этот объект в режим блокировки принудительно с помощью logic_auto. Расположите logic_auto рядом с мостом.
Расположение logic_auto


Перейдите к logic_auto , перейдите во вкладку "Outputs" и наберите команду:
Список Outputs


Этой командой вы велели обоим func_nav_blocker заблокировать оба входа на мост для игровых NPC. Теперь перейдите к нашему мосту prop_dynamic , пройдите во вкладку "Outputs" и добавьте команду:
Список Outputs


Эта команда велит обоим func_nav_blocker снять блокировку с навигационных областей, что бы игровые NPC могли свободно проходить по мосту.

Вот теперь действительно все! Работа выполнена грамотно и полностью! Поздравляем вас с новыми знаниями!

Похожие новости

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Комментариев 0