Смена карт (уровней)

Как вы знаете, мир Half-Life построен из большого количества отдельных карт-уровней. И по мере вашего продвижения по игре вы переходите с карты на карту. переходы бывают двух сторонние и односторонние (можно вернуться назад и нет, соответственно). О смене уровней мы и поговорим в этом уроке.

Для начала, как обычно, мы разберем, что нам необходимо и как это все работает. Обратимся к оригинальной игре. Когда и как меняются уровни? Двухсторонние - коридоры, узкие проходы и тому подобные места, где игрок имеет возможность пройти в обратном направлении. Односторонние переходы ставятся в местах, где игрока принуждают спрыгнуть с высоты, либо, где NPC закрывают за игроком дверь, проход и так далее. Фактически, разница в работе над разными типами переходов, только в возможности достижения игроком триггера перехода. На скриншоте вы видите переход между первой и второй картами первой главы, уже упомянутый "односторонний" переход. Как вы помните, в этом месте вы спрыгиваете с окна во внутренний дворик и этим вас лишают возможности возврата.
Загрузка уровня


Попробуем сделать что-то подобное этому. Открываем новый проект сохраняем его под именем "changelevel" и создаем замкнутый внутренний дворик с проломом в одной из стен на уровне второго этажа.
Внутренний дворик


За проломом, оборудуем комнатку, поставим дверь и сделаем вид, что игрок пришел из-за этой двери.
Стартовая комната


Сам дворик немного оживим. Наполним его моделями и декалями.
Наполнение дворика


Загружать следующую по продвижению карту, мы будем в коридорчике за дверью, аналогично оригинальной игры.
Дверь к триггеру прехода


Что же есть у нас в коридоре? Три необходимые нам вещи:
"Содержимое" коридора


1. Так как игрок может не закрыть за собой дверь, а следующий уровень у нас начинается с закрытой дверью, то ставим триггер trigger_once на закрытие и блокировку двери.
2. Устанавливаем info_landmark и даем ему имя. Проще всего, давать имена согласно перехода, пример - map1_to_map2, map2_to_map3, map3_to_map4 и так далее.
3. Ставим триггер trigger_changelevel для отдачи команды о загрузке следующего уровня. Обязательно указываем точку входа на следующую карту "Landmark Name" и имя следующей карты "New Map Name". Так как у меня следующая по порядку карта имеет название "changelevel2", то я делаю следующие настройки:
Пояснительная схема


На этом работа с первой картой и заканчивается. Теперь сохраняем наш проект как "changelevel2", и получаем две идентичные карты. На карте changelevel2 удаляем все, что находится за дверью. Дворик, наполнение, стартовую комнату и так далее. Оставляем только коридор и дверь.
Новая карта


Переносим точку спауна игрока в коридор, например к двери, положение ее не важно, игрок появится по координатам переданным info_landmark:
Старт нового уровня


Саму дверь, снаружи закрываем брашем, чтобы избежать утечки "Leak" и изменяем ее настройки.
Исправляем настройки двери


Не смотря на то, что это односторонний переход, игра вывалится с ошибкой, если мы не сделаем триггера обратного перехода. Поэтому уменьшаем его, задираем повыше и настраиваем:
"Прячем" триггер обратного перехода


Вот и все. Вы освоили новые знания. Поздравляем вас!

Внимание! У Вас нет прав для просмотра скрытого текста.

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

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

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