Конвейер (Portal 2)

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)Translate (Translate)

Введение

Для создания конвейера Portal 2 потребуется несколько брашевых энтитей func_tracktrain(en), каждая со своей целью пути path_track(en), объединённых в ряд, с включенным параметром Teleport TO this у первой энтити, чтобы путь зациклился.

Note.pngПримечание:Чтобы узнать, как использовать гель на конвейерной ленте, см. примечание(en) внизу статьи.

У каждой func_tracktrain(en) родителем должна быть модель prop_dynamic(en) props_factory/conveyor_belt_module.mdl, которая будет следовать пути.

Создание опоры конвейера

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

1. Создайте prop_static(en) с моделью props_factory/conveyor_belt.mdl

2. Продублируйте её и выстройте в ряд их четырёх штук. Это будет конвейерная опора:

ConveyorPortal2 1.png

Создание конвейерной ленты

3. Создайте энтити prop_dynamic(en) с моделью props_factory/conveyor_belt_module.mdl

4. Выровняйте её начало по началу опоры prop_static, которую мы создали на шаге 1:

Конвейерная лента должна как минимум на 8 единиц быть выше основы.

Движение ленты

5. Создайте маленький прямоугольный браш 20x24x16 с текстурой nodraw. Поместите его ниже конвейерной ленты, чтобы он занимал место между моделями:

ConveyorPortal2 3.png

6. Выберите конвейерную ленту вместе с брашем и скопируйте их дубликаты в начале каждой конвейерной основы.

В данном руководстве потребуется семь секций.

7. Чтобы облегчить задачу, скройте всё, кроме первой конвейерной ленты и прямоугольного nodraw-браша (H = скрывает выбранное, U = отображает всё скрытое).

8. Создайте энтити path_track(en) и поместите её внутри прямоугольника nodraw так, чтобы они оба начинались в одном и том же месте:

ConveyorPortal2 5a.png
Как упоминалось ранее, имеется семь секций, поэтому должно быть семь установок nodraw+path_track.
Note.pngПримечание:В ходе дальнейших действий модели будут скрыты, и внимание будет уделяться только этим установкам nodraw и path_track.

9. Каждый блок nodraw сделайте энтитей func_tracktrain(en). Дайте каждой энтити своё имя. В данном руководстве имена идут от conveyor_mover01 до conveyor_mover07. Каждая энтити будет иметь следующие свойства:

Max Speed: 60
Initial Speed: 60
Change Angles: Never
conveyor_mover01 'First stop target' = 'conveyor_path01'
conveyor_mover02 'First stop target' = 'conveyor_path02'
conveyor_mover03 'First stop target' = 'conveyor_path03'

Повторите это для каждой энтити func_tracktrain.

10. Скройте nodraw-энтити func_tracktrain и снимите выбор с них, оставьте видимыми энтити path_track. Каждой path_track дайте уникальное имя по принципу, как в шаге 9 выше. В данном руководстве назовём их conveyor_path01 - conveyor_path07.

11. У каждой path_track задайте 'Next stop target' на следующую path_track, то есть у conveyor_path01 параметр 'next stop' задан на 'conveyor_path02' и так далее. Последняя должна указывать на первую, то есть цель conveyor_path07 - это conveyor_path01.

Связанные path_tracks с оранжевыми линиями между ними, начала совпадают с каждой nodraw-энтитей tracktrain. Каждая tracktrain имеет свою path_track, и обладает уникальным именем.

Завершение

12. Выберите первую path_track (с именем conveyor_path01) и установите флаг 'Teleport to THIS path_track':

По достижении конца (conveyor_path07) путь будет немедленно телепортирован в начало.
Note.pngПримечание:Вместо использования teleport to THIS вы можете использовать worldportal, также называемый linked_portal_door(en), скрытый за брашем с выключенным параметром Solidity.

13. И в конце для каждой конвейерной ленты сделайте родителем tracktrain'ы.

Примечания

  • В конце конвейера можно осуществлять спаун энтитей с использованием энтити env_entity_maker(en), чтобы создавать некий шаблон, который перемещается посредством ленты и уничтожается в её конце посредством триггера или сбрасывается в яму.
  • Гели не будут оставаться на поверхности ленты, если используются модели, как было сделано выше. Секции движущейся ленты должны быть tracktrain-брашами, а не моделями. Удалите все энтити prop_dynamic и примените текстуру metal/conveyor_belt к nodraw-брашам (вместо динамических моделей).
  • func_tracktrain принимает вход RemovePaint

Ссылки

  • Скачать карту-образец: [1]