Панель веры (Portal 2)

From Valve Developer Community
Jump to: navigation, search
English Deutsch Français
Faithplateicon.png

Панели веры или катапульты - это подбрасывающие панели в Portal 2. Они могут подбрасывать объекты (турели, кубы) и игроков.

Создание с помощью экземпляров

Для панели веры есть несколько экземпляров. Однако, энтити trigger_catapult потребуется добавить вручную. Настройте её выход для срабатывания экземпляра, который уже включает и звуки, и анимацию.

  • gameplay\faithplate_black.vmf
  • gameplay\faithplate_black_impostor.vmf
  • gameplay\faithplate_clean.vmf
  • gameplay\faithplate_dirty.vmf
  • gameplay\faithplate_dirty_impostor.vmf

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

1) Создайте энтити prop_dynamic:

Название свойства Значение
World Model "models/props/faith_plate.mdl" или "models/props/faith_plate_128.mdl"
Name "catapult_model_1" (Вы можете изменить название, но не забудьте изменить его во всех входах.)
Collision Not Solid
Disable Shadows Yes

2) Создайте энтити info_target:

Название свойства Значение
Name catapult_target_1
  • Это цель, в которую вас запустит катапульта.


3) Создайте браш и переведите его в энтити trigger_catapult, покройте её trigger-текстурой:

Название свойства Значение
Name catapult_trigger_1
Launch Direction "-90 0 0" Если хотите взлететь вверх
Player speed Подберите оптимальное значение в зависимости от расстояния, для начала можете попробовать 750
Physics speed Определяет скорость полета летящих предметов. Прибавьте 150 к Player speed (900).
Apply Angular impulse True
Launch target catapult_target_1
Use Threshold Check Для модели панели веры задайте значение NO.


Совет:
Чтобы преобразовать браш в энтити, выберите его, нажмите на нём правой кнопкой мыши и выберите пункт Tie to Entity
Совет:
Скорость и траектория (угол запуска) обратны друг другу: чем выше скорость, тем прямее траектория. И наоборот, чем меньше скорость, тем траектория выше.


My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnCatapulted catapult_model_1 SetAnimation (angled, fast или straightup) 0.00 No
Пример панели веры в Source Sdk

4) Создайте энтити ambient_generic:

Название свойства Значение
Name catapult_sound_1
Sound Name Metal_SeafloorCar.BulletImpact
SourceEntityName catapult_model_1 (название модели панели веры)
Флаги Значение
Is NOT Looped Yes
Start Silent Yes

Чтобы звук заработал, вернитесь к trigger_catapult и создайте новый выход:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnCatapulted catapult_sound_1 playsound - 0.00 No

5) Создайте блок с текстурой tools/toolsinvisible под моделью панели веры, чтобы игрок и предметы не проваливались сквозь неё.

6) Также не забудьте добавить info_placement_helper на портальную поверхность в конце траектории - так будет легче пролететь через портал.

Отладка

Как было показано в комментариях разработчиков, можно визуально наблюдать траектории полета для отладки и настройки панели веры. В консоли введите "ent_bbox trigger_catapult", и вы увидите визуальное представление траекторий полета от каждой trigger_catapult. Чтобы просмотреть только одну траекторию, введите "ent_bbox <название энтити панели веры>".

Если в trigger_catapult используется константная скорость (Use Exact Velocity = yes), то вы можете изменять скорость игрока и предметов прямо во время игры:

  • "ent_fire <название энтити панели веры> setplayerspeed <скорость>"
  • "ent_fire <название энтити панели веры> setphysicspeed <скорость>"

Визуальное отображение траекторий обновится автоматически.

Советы

Вы также можете использовать trigger_catapult для контроля приземления игрока. Например, вы можете установить портал на стене, поднятой под углом вверх, и вылететь из неё.

Чтобы панель не отбрасывала, когда вы просто проходите по ней, установите следующие параметры trigger_catapult:

Название свойства Значение
Lower threshold Нижняя граница скорости в процентах от заданной скорости полета, задается десятичной дробью от 0 до 1.
Upper threshold Верхняя граница.
UseThresholdCheck 'YES' - использовать ограничения, 'NO' - всегда отбрасывать.

С настройками ограничений необходимо немного разобраться:

Вопреки обыденным представлениям, ограничения НЕ выражают процент скорости игрока в традиционном понимании. Нижняя граница - это процентное значение, которое вычитается из скорости игрока, а верхняя граница - добавляется к скорости игрока. Например, допустим, вы задали скорость катапультирования на 500 ед./сек. Нижняя граница 0.1 подразумевает, что игрок должен двигаться со скоростью как минимум 90% (100% - 10%) - то есть 450 ед./сек. Верхняя граница 0.5 означает, что игрок не должен двигаться быстрее 150% (100% + 50%) - то есть 750 ед./сек. Пока скорость перемещения игрока находится в этих пределах, trigger_catapult отбрасывает игрока. Следовательно, ограничения работают так: чем ниже заданные ограничения, тем больше вероятность, что скорость игрока приведёт к срабатыванию катапульты.

К сожалению, здесь придётся учесть ещё кое-что: если для trigger_catapult указана цель, то скорость игрока будет изменена так, чтобы он долетел до этой цели, поэтому становится невозможно узнать точную скорость, с которой игрок будет катапультирован. Даже если Use Exact Velocity задано на yes, скорость игрока всё ещё может варьироваться. Поэтому ограничения катапультирования должны охватывать все возможные скорости.

Всё это более или менее легко проверить: в целях отладки программисты добавили консольную команду ent_bbox, которая используется для графического отображения траекторий катапульт в игре. К счастью, эта команда также выводит текущую скорость игрока и действующие ограничения (в ед./сек.), в момент, когда игрок встаёт на trigger_catapult. Но чтобы эта команда работала, необходимо, чтобы у trigger_catapult была указана цель катапультирования.

См. также