Поле антиэкспроприации

From Valve Developer Community
Jump to: navigation, search
English Deutsch Français
"Обратите внимание на поле раскалённых частиц на выходе."
- Диктор Portal 2

Поле антиэкспроприации или Испаритель - это специальное энергетическое поле в Portal 2, которое сбрасывает установленные пушкой порталы и разрушает объекты, которые коснулись его. Через него нельзя устанавливать порталы.

Используйте поле антиэкспроприации, чтобы у игрока не было возможности установить портал в области, ограждённой полем, либо пронести через поле объекты.

В Portal испаритель состоит из двух моделей - невидимого (EN) trigger_portal_cleanser с текстурой trigger и из излучателя системы частиц ((EN) info_particle_system).

В Portal 2 испаритель состоит из энтити (trigger_portal_cleanser) и пары моделей (fizzler.mdl). У браша, используемого для триггера, должна быть установлена текстура NODRAW, кроме двух сторон, имеющих текстуру поля антиэкспроприации.

Экземпляр

Как для большинства тестовых элементов Portal, для поля антиэкспроприации также есть свои экземпляры. Они статичны, имеют размер лишь 128x128 единиц и предназначены для работы в сочетании с лифтом, и поэтому сферы их применения очень ограничены. Есть три варианта оформления: чёрный и белый повреждённые и чёрный чистый.

  • instances/gameplay/fizzler_black_clean_128x128.vmf
  • instances/gameplay/fizzler_black_dirty_128x128.vmf
  • instances/gameplay/fizzler_white_dirty_128x128.vmf

Создание вручную

Данное руководство будет понятно даже новичку, не знающему Hammer.

Шаг 1

Создайте prop_dynamic и (для данного руководства) используйте модель "models/props/fizzler.mdl". Есть и другие модели испарителей (со словом "fizzler") для карт в стиле старой лаборатории или для моделей с поддержкой динамического "открытия-закрытия":

  • models/props/fizzler.mdl
  • models/props/fizzler_dynamic.mdl
  • models/props_underground/underground_fizzler.mdl
  • models/props_underground/underground_fizzler_wall.mdl

Это основная четвёрка моделей, есть и другие, более или менее детализированные.

Шаг 2

Обратите внимание, как браши окружают модель, чтобы она не была врезана в стену.

Теперь разместите по модели с каждой стороны области, через которую в обоих направлениях предметы будут испепеляться. Модель излучателя поля, как вы могли заметить, утоплена в стену, чтобы при необходимости воспроизвести анимацию закрытия; даже если используется статическая модель, гнездо всё равно присутствует.

Примечание:Не размещайте стену поперёк или позади поля, так как это выглядит неестественно.

Итак, создадим три браша, окружающие излучатель поля сзади, по бокам и часть спереди (обратите внимание, что боковые браши будут также входить с переднюю сторону), не забудьте связать эти браши с func_detail.

Создадим два браша размером 32x8 единиц и 128 единиц в высоту и разместим их с каждой стороны модели излучателя. Убедитесь, что каждая панель крепления излучателя посажена на браше, как показано на иллюстрации. Добавьте ещё один браш за моделью для герметизации (если там уже есть другая стена, делать этого не нужно). Покройте эти браши текстурой соответствующей стены, даже внутренние части; покройте текстурой "nodraw" только те части, которые не будут видны.

Шаг 3

Создайте браш с текстурой "nodraw" (tools/toolsnodraw), идущий от одной модели излучателя к другой. Это будет область антиэкспроприации, испепеляющая предметы. Она должна быть единицу толщиной и 128 единиц в высоту. Свяжите браш (нажатием Ctrl+T) с энтити "trigger_portal_clenser". Задайте параметр "Visible?" на "Yes" и нажмите кнопку "Применить".

Примечание:Вы можете попробовать разместить её точно в центре модели, но центр модели имеет толщину 2 единицы.

Не забудьте на вкладке флажков включить "Physics Objects", чтобы при касании растворялись не только порталы, но и такие предметы, как кубы и (EN) турели.

Шаг 4

Откройте Texture Application tool и выберите только переднюю и заднюю стороны поля, которые будут видимы. Нажмите "Browse" и фильтруйте в поиске "fizzler", выберите "effects/fizzler" и измените текстурную шкалу на 0.125 для обеих осей X и Y, затем нажмите "Применить".

У вас должен получиться работающее поле антиэкспроприации! Если дать ему имя, вы сможете открывать и закрывать его системой входов/выходов, в этом случае не забудьте выбрать другую модель "models/props/fizzler_dynamic.mdl" и добавить соответствующие анимации при открытии и закрытии.

Динамическое поле антиэкспроприации

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

Шаг 1

1. Создайте две энтити prop_dynamic со следующими настройками:

Имя свойства Значение
World Model models/props/fizzler_dynamic.mdl
Name fizzlers
HoldAnimation true
Collision Not Solid

2. Создайте блок trigger_portal_cleanser 128 единиц в высоту со следующими настройками:

Имя свойства Значение
Name fizzler_brush
Visible yes

Выберите следующие флаги:

  • Clients
  • NPCs
  • Physics Objects

3. Создайте энтити logic_relay со следующими настройками:

Имя свойства Значение
Name relay_fizzler_enable

и следующими выходами:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger fizzler_brush Enable <none> 0.00 No
Io11.png OnTrigger fizzlers SetAnimation open 0.00 No

4. Создайте энтити logic_relay со следующими настройками:

Имя свойства Значение
Name relay_fizzler_disable

и следующими выходами:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger fizzler_brush Disable <none> 0.00 No
Io11.png OnTrigger fizzlers SetAnimation close 0.00 No

Шаг 2

Для открытия и закрытия поля необходим триггер. В этом руководстве мы используем простую prop_floor_button. Когда игрок или куб нажмёт кнопку, поле будет отключено. При отпускании кнопки поле будет снова включено.

5. Создайте энтити prop_floor_button со следующими выходами:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed relay_fizzler_disable Trigger <none> 0.00 No
Io11.png OnUnPressed relay_fizzler_enable Trigger <none> 0.00 No

Получилось работающее динамическое поле антиэкспроприации! Мы можете поменять триггер на, например, prop_button, trigger_multiple и т.д.

Поля большого размера

Обратите внимание на свечение по краям устройства антиэкспроприации

Иногда требуется создать поле выше или длиннее 128 единиц, но так как модель излучателя поля имеет длину лишь 128 единиц, потребуется добавить еще два излучателя и браши к ним над имеющимися моделями. Для этого просто скопируйте созданное ранее и перетащите на 128 единиц выше, и повторяйте это столько, сколько вам нужно.
НЕ растягивайте браши на нужную вам высоту, так как требуется, чтобы при выстреле из портальной пушки светилась белым только одна секция поля; применяйте этот подход, так как он используется в официальных картах. Чтобы сделать поле более широким, потребуется разрезать браш на три части. Воспользуйтесь инструментом clipping tool (Ctrl+X) по бокам как можно ближе к моделям, и убедитесь, что обе стороны отрезанного остались (выделены белым). Оба новых браша должны быть 128 единиц в длину. Средний браш будет растягиваться между этими двумя - его длина не важна. Снова откройте Texture Application tool и залейте переднюю и задние стороны среднего браша текстурой "effects/fizzler_center", браш справа текстурой "effects/fizzler_l", браш слева - "effects/fizzler_r". Не забудьте выровнять текстуру по её соответствующей стороне!

Примечание:Разница между "fizzler_l" и "fizzler_r" заключается в направлении свечения, излучаемого устройством, средняя часть такого не имеет.

Поле антиэкспроприации Portal 1

Gear testchmb 010000.jpg

Я думаю все видели "Поле раскалённых частиц" у выхода из каждой комнаты. Сейчас мы научимся сами делать такие!


Подготовка

Для начала создадим 2 prop_static с параметром world model: models/props/portal_cleanser_1.mdl Расположим их так как считаете нужным, но помните, что размер поля должен быть 124x128. Если хотите делать поле большего размера - вам придётся подбирать размеры частиц, так что лучше делайте 124х128 :)

Шаг Первый. Самый важный

Trigger portal cleanser.JPG
Создадим браш покрытый текстурой tools/toolstrigger, превратите его в энтити trigger_portal_cleanser и поставьте флаги Clients и Everythink. Расположите его между 2 моделей.

Шаг Второй. Тоже важный

Portal Cleanser Final.PNG

Теперь создадим энтити info_particle_system и расположим ровно по центру нашего триггера. Параметры:

  • Particle System Name: portal_cleanser
  • Start Active?: Yes (мы же хотим, что бы оно работало сразу)
  • Pitch Yaw Roll: А вот здесь уже сами. Только помните, что энтити должна быть повёрнута параллельно триггеру.

Шаг Третий. Вообще-то не шаг, а окончание

Результат.

Итак, если вы всё сделали правильно, то должно получится как на рисунке:

Примечание

Предупреждение:НИКОГДА не включайте флаг "Everything" для trigger_portal_cleanser, особенно при использовании динамического излучателя, иначе ваши модели будут испепелены полем!


Смотрите Также