Тема: Переход с одной карты на другую (и обратно) Ключевые слова: переход между уровнями картами transition landmark changelevel См. также:
Состыковка двух карт выполняется достаточно просто, однако даже на developer.valvesoftware.com
соответствующая тема мало освещена. Приводимый далее метод учитывает все известные тонкости
построения переходов между картами. Для лучшего понимания метода определим роли энтити, необходимых для построения перехода:
Схема перехода представляет собой общий участок геометрии для двух карт (общие браши), на который нанесены ключевые для перехода детали этих карт. Пример Фрагмент местности взят исключительно для наглядности. На деле рекомендуется скрывать (маскировать) от игрока геометрический конец карты (границу уровня). В противном случае будет видно, что до перехода игрок упирался в "стенку", которая исчезла после загрузки.
Энтити trigger_changelevel перекрывают весь доступный игроку путь, чтобы переход на другую карту обязательно состоялся. Рисуется схема перехода в том же порядке, в котором расставлены красные цифры. Сначала на рисунок местности наносится путь игрока (1), который ведет из <карты 1> в <карту 2> (примерно посередине этого пути кончается одна карта и начинается другая). Затем в пределах видимости игрока располагается энтити info_landmark (2). Далее рисуются энтити trigger_changelevel (брашевые) по принципу "ближе к началу пути энтити из <карты 2>, ближе к концу пути энтити из <карты 1>" (3, 4). Последней определяется область, которая видна игроку, и обрисовывается в виде прямоугольника - брашевой энтити trigger_transition (5). Теперь разбиваем схему перехода на две части, причем все элементы, кроме энтити trigger_changelevel, дублируются. Пример (продолжение предыдущего) Красные стрелки показывают движение игрока, переходящего с одной карты на другую (отсутствуют на реальной карте). Синим цветом показано, где располагались соответствующие энтити trigger_changelevel на схеме перехода (отсутствуют на реальной карте). Для ясности показана связь между картами (двусторонней стрелкой). Теперь уже понятно, как следует располагать на картах необходимые энтити. В результате игрок, перейдя на другую карту, оставит уже позади себя trigger_changelevel, ведущий назад (на предыдущую карту). Учтите, что игрок появится на следующей карте в той же точке относительно info_landmark, в которой относительно info_landmark на текущей карте начался переход (загрузка) Необходимые условия правильного двустороннего перехода между картами:
Другой пример перехода Обратите внимание на то, что энтити trigger_changelevel расположены с отступом от угла браша (1), чтобы игрок, перейдя на другую карту, ни при каких условиях не коснулся сразу же trigger_changelevel, ведущего назад. Это более приемлемый случай, хотя и тут рекомендуется отодвинуть энтити trigger_changelevel от угла браша (1), чтобы до загрузки следующей карты игрок не видел местности за поворотом. Рассмотренный способ дает работающий в обоих направлениях переход между двумя картами. Для построения одностороннего перехода отключите trigger_changelevel на второй карте (атрибут Start Disabled установить в Yes); в этом (и только в этом) случае данные энтити могут перекрываться. Альтернативный вариант - расположить trigger_changelevel в недоступном для игрока месте. Если Вы построили переход с <карты 1> на <карту 2>, и теперь нужно построить, в свою очередь, переход с <карты 2> на <карту 3>, на время представьте, что: <карта 2> соответствует <карте 1> <карта 3> соответствует <карте 2> Затем повторите аналогичные действия для построения перехода, однако имена (атрибуты Name) энтити, участвующих в переходах 1-2 и 2-3, не должны совпадать. Статьи (рус): Статьи (eng):
Номер статьи: 14
|