Лифт (Portal 2)

From Valve Developer Community
Jump to: navigation, search
English Español

Лифты используются в Portal 2 для перехода игрока между уровнями. Не путайте лифт с разборочным аппаратом, который используется для перехода между уровнями в кооперативном режиме.

Добавление лифтов на карту

Note.png Примечание: В данной статье мы создадим лифт, в котором будет появляться игрок в начале уровня. При появлении игрока на его портальной пушке будет прикреплена картофелина. Чтобы убрать картофелину, см. руководства ниже.

Входной лифт

1) Выберите инструмент entity tool и создайте func_instance. В поле name введите - "Arrival_Elevator", а в поле VMF file name укажите путь к лифту "instances/turbine_elevator/arrival_elevator_a4_base.vmf"

Note.png Примечание: Если заготовка с лифтом не загружается, сохраните карту и перезапустите Hammer. Карта, которую вы редактировали, находится в папке portal 2\sdk_content\maps.
Оба экземпляра сразу после копирования.

2) Чтобы сделать проще, и не создавать два func_instance и потом не искать второй экземпляр среди всей этой путаницы, просто дублируйте "Arrival_Elevator" с помощью Shift и перетащите копию так, чтобы она оказалась точно над оригиналом.

Note.png Примечание: Если посмотреть на два высоких синих столба с текстурой "skip", вы сможете легко выровнять два этих элемента. Просто проверьте, чтобы столбы были выровнены во всех двухмерных видах. Также проверьте, чтобы были выровнены нижние части столбов. Если нужно выбрать одну из двух частей, то есть лифт или логику, вы можете нажать на один из кубов, соединённых со столбом.

3) Дважды любой из двух экземпляров и переименуйте его на "Arrival_Logic" с VMF file name "instances/turbine_elevator/arrival_elevator_a4_logic.vmf".

Note.png Примечание: Вы можете не использовать a4_logic. "arrival_elevator_logic" работает точно так же, только лифт идёт сверху вниз, а не снизу верх.

Вы можете использовать другие лифты для разных тем; только проверьте, что у вас есть экземпляры и лифта, и логики.

Управление переходами

Управление переходами осуществляется с помощью небольших кубов за лифтом.

4) Создайте где-нибудь ещё одну энтити func_instance; подходящее место - прямо за моделью лифта (но не внутри входного лифта!). Назовите энтити "Arrival_Departure_Trans" с VMF file name "instances/transitions/arrival_departure_transition_ents.vmf". Этот экземпляр отвечает за переходы во входном И выходном лифтах, но не отвечает за vmf'ы выходного лифта (см. ниже).

Вы можете выбирать видеоклипы в лифтовых комнатах установкой значений переменных в этом экземпляре; например, попробуйте установить значение переменной $arrival_video равным media/animalking.bik. Полный список видеороликов см. на этой странице.

Выходной лифт

5) Для создания выходного лифта просто повторите шаги 1-3, но вместо "arrival_elevator" выберите "instances/turbine_elevator/departure_elevator_a4_logic.vmf" и "instances/turbine_elevator/departure_elevator_a4_base.vmf", оба находятся в одной папке. Назовите их "Departure_Elevator" и "Departure_Logic" соответственно.

Соединение с картой

Лифт, соединённый с комнатой.

6) Выпирающее в середине лифта боковое ответвление выглядит как коридорный переход. Именно этот переход вы должны соединить со своей картой. Для этого хорошо подойдёт тестовая дверь.

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

Ваш лифт готов, поздравляем!

Появление без картофелины

1. Повторите шаги 1 и 2 выше.

2. На шаге 3 замените "instances/turbine_elevator/arrival_elevator_a4_base.vmf" экземпляром "instances/turbine_elevator/arrival_elevator_base.vmf".

3. Щёлкните экземпляр дважды и нажмите Edit Instance. Сразу же сохраните его под новым именем ("my_arrival_elevator_base.vmf", к примеру), так как мы изменим его. Также не забудьте потом изменить Vmf Filename экземпляра в своей карте.

4. Дважды щёлкните trigger_once с именем "elevator_1_interior_start_trigger", что охватывает модель лифта.

5. Перейдите на вкладку Outputs и скопируйте строку:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch elevator_1 MoveToPathNode @elevator_1_bottom_path_1 0.10 No

6. Удалите строку этого выхода и рядом с моделью лифта поместите энтити func_instance_io_proxy с именем "proxy".

7. Перейдите на вкладку Outputs и вставьте строку, которую мы скопировали ранее.

8. Измените выход "OnStartTouch" на "OnProxyRelay". Сохраните изменения в экземпляре.

9. Вернитесь в свою карту и создайте энтити info_player_start и weapon_portalgun в лифте (проверьте, что игрок не застрянет в лифте).

10. Создайте энтити trigger_once, покрывающую всю модель лифта вместе с info_player_start.

11. Добавьте этот выход:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch Arrival_logic instance:elevator_1;MoveToPathNode 0 0.00 No

12. Сохраните свою карту, скомпилируйте её и проверьте. Всё должно работать.

Появление без картофелины (простой способ)

1. Создайте logic_playerproxy под именем player_settings.

2. Где-нибудь в карте поместите logic_auto, лучше рядом с logic_playerproxy, чтобы их вместе было легче найти.

3. На вкладке Output в свойствах logic_auto добавьте этот выход:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn player_settings RemovePotatosFromPortalgun 1.00 No

4. Наконец, сохраните свою карту, скомпилируйте и проверьте.

Появление без картофелины (простой способ 2)

1. Создайте trigger_weaponstrip внизу входного лифта.

2. Поместите портальную пушку над триггером.

3. В свойствах портальной пушки настройте её по своим предпочтениям (без картофелины или только с синим порталом).

Создание старого лифта

1. Следуйте инструкциям выше, но для Arrival_Elevator используйте instances/underground/test_dome_entrance_lift_01.vmf и не создавайте Arrival_Logic.

2. Внутри лифта создайте info_player_start. Если это не удалось сделать в трехмерном виде, создайте эту энтити в klde[vthyjv виде и поместите её так, чтобы она касалась ногами пола лифта. (НЕ шахты лифта, а самого лифта.)

3. Создайте энтити logic_auto (или, если такая уже есть, используйте её). На вкладке Outputs добавьте вход:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn Arrival_Elevator-entrance_lift_train StartForward 0.00 No

Он будет указан, как ошибочный. Но он всё равно работает. Здесь также работает "простой способ", как убрать картофелину с пушки.

Создание старого лифта (простой способ)

Откройте vmf-файл maps\instances\underground\test_dome_entrance_lift_01.vmf и найдите энтити point_teleport под именем @test_dome_lift_entry_teleport, смените её имя на @arrival_teleport и сохраните экземпляр под другим именем.

Свой вход и выход

Чтобы игрок появлялся в другом месте, создайте point_teleport и назовите её @arrival_teleport, задайте Entity to Teleport на "!player".

Чтобы создать конец уровня в другом месте, добавьте следующий выход к триггеру или другой энтити, которая оканчивает ваш уровень:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png "insert output" @exit_teleport teleport 0.00 No

Если выход отмечен как ошибочный, игнорируйте это.

См. также