Prop physics

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал Prop Types Overview, Prop Data, Prop_physics.

Описание

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект должен быть установлен там, где будет использоваться.
  • На карте может быть установлено множество этих объектов
  • Этот объект всегда обрабатывается на стороне сервера.
  • Объект НЕ должен пересекаться с другими физическими объектами на карте.
  • Объект НЕ отбрасывает Lightmap-тени и динамические тени.

Особенности использования

Ошибки

Не обнаружены.

Заметки

Эти объекты при использовании их в игре дают не очень корректные физические столкновения с игроком, что может испортить игровой процесс. Например такие объекты при соприкосновениях с игроком могут подбросить его очень высоко вверх, а при падении игрок потеряет здоровье. Так же этот объект может помешать передвижению игроков, что скорей всего многим игрокам может не понравиться, а так же этот объект может способствовать высокому сетевому трафику, что так же может плачевно сказаться на игровом процессе для игроков. Во избежание вышеописанных проблем используется объект prop_physics_multiplayer, являющийся копией этого объекта, но имеющий упрощённую модель столкновений с игроком, что делает его весьма удобным средством для заполнения карт.

На некоторых серверах может быть использована не интерактивная физика. Такая физика включается консольной командой "sv_turbophysics 1". При этом игроки не могут сдвинуть физические объекты просто толкая их. Чтобы толкать физические объекты нужно использовать на них клавишу "Использовать". При использовании такого типа физики игроки могут вставать на физические объекты сверху без опасений быть сброшенным в результате неточностей физических расчётов.

Параметры

  • Team Num – команда к которой принадлежит этот объект (Нет/Террористы/Контр-Террористы); если игрок и этот объект находятся в одной команде, то игрок не сможет наносить визуальный урон объекту если на сервере mp_friendlyfire равно 0; (см. фильтр filter_activator_team);
  • Pitch Yaw Roll (Y Z X) – ориентация объекта на карте (направление распространения);
  • World Model – имя файла MDL-модели, которая будет использоваться в качестве основы для внешнего вида объекта (выбирается в окне Model Browser);
  • Skin – установить номер другого скина, если модель "World Model" использует несколько скинов; скин – это набор текстур для модели; изменяя скин, изменяется внешний вид модели; узнать какие скины использует модель можно в программе "Model Viewer";
  • Body Group – установить номер другого подобъекта, если модель "World Model" использует несколько подобъектов; подобъект – это другая модель, встроенная в тот же файл; изменяя подобъект, изменяется внешний вид объекта; узнать какие подобъекты использует объект можно в программе "Model Viewer";
  • Mass Scale – множитель массы объекта; 0 или 1.0 – масса не меняется; не используется если в свойстве "Physics Override Parameters" одним из параметров является "mass";
  • Inertia Scale – множитель инерции объекта; 0 или 1.0 – инерция не меняется; не используется если в свойстве "Physics Override Parameters" одним из параметров является "inertia";
  • Physics Override Parameters – список параметров для изменения некоторых физических свойств объекта:
    • mass <float|kilograms> - изменить массу объекта;
    • inertia <float|scale> - изменить инерцию объекта;
    • damping <float|scale> - изменить гашение линейной скорости объекта;
    • rotdamping <float|scale> - изменить гашение вращений объекта;
    • drag <float|scale> - изменить сопротивление воздуха для объекта;
    • surfaceprop<string|name> - изменить материал из которого сделан объект;
      • список изменений должен быть записан в следующей форме: <свойство,значение>,<свойство,значение>, ... и т.д. например: mass,10,inertia,3,damping,0.75,drag,5000,surfaceprop,glassbottle
  • Physics Impact Damage Scale – множитель повреждений, наносимых объекту в результате физических взаимодействий; например: падение на землю, удар со стороны другого объекта или игрока и т.д.;
  • Explosion Damage – количество повреждений от взрыва, создаваемого автоматически в момент когда объект ломается; если значение этого свойства не равно нулю, то взрыв будет произведён, даже если значение свойства "Explosion Radius" равно нулю; 0 – взрыв не будет произведён;
  • Explosion Radius – радиус взрыва, создаваемого автоматически в момент когда объект ломается; если значение этого свойства не равно нулю, то взрыв будет произведён, даже если значение свойства "Explosion Damage" равно нулю; 0 – взрыв не будет произведён;
  • Performance Mode – режим обработки частей физических объектов после их разрушения на стороне сервера; для того чтобы значение этого свойства нашло своё применение, необходимо чтобы модель, указанная в свойстве "World Model" была скомпилирована с особыми QC-параметрами, указанными в блоке "prop_data": $keyvalues { prop_data { "multiplayer_break" "server" } } или $keyvalues { prop_data { "multiplayer_break" "both" } } или имела особый тип материала, который подразумевает создание частей физических объектов на сервере;
    • Normal – на стороне сервера могут и будут создаваться части физических объектов; не рекомендуется использовать, потому что на стороне клиента этих частей всё равно не будет видно и это никак не скажется на игровом процессе, однако будет создавать лишнюю нагрузку на сервер;
    • No Gibs on Server Side – на стороне сервера не будут создаваться части физических объектов;

по умолчанию для всех моделей выбирается "multiplayer_break" = "client", поэтому крайне сложно найти модель, для которой понадобилось бы использовать это свойство, однако лучше чтобы значение этого свойства всегда было равно "No Gibs on Server Side";

  • Pressure Delay - задержка перед тем как сломаться от давления, оказываемого со стороны другого объекта или игрока (секунды); работает только при включенном флажке "Break on Pressure";
  • Min Damage to Hurt – объект будет игнорировать любые типы повреждений со стороны других объектов и игрока, если величина этих повреждений меньше значения этого свойства;
  • Health Level to Enable Motion – сколько "здоровья" должно остаться у объекта, чтобы для него автоматически вызвалась функция "EnableMotion"; выполняется один раз за раунд; если значение этого свойства не равно нулю, то для объекта в начале каждого раунда автоматически будет вызываться функция "DisableMotion";
  • Force Amount to Enable Motion – какую силу нужно приложить к объекту, чтобы для него автоматически вызвалась функция "EnableMotion"; выполняется один раз за раунд; например: игрок массой 85 килограмм двигаясь со скоростью 100 юнитов в секунду при ударе об объект приложит к нему силу равную 85 * 100 = 8500; если значение этого свойства не равно нулю, то для объекта в начале каждого раунда автоматически будет вызываться функция "DisableMotion"; если установлен флажок "Prevent motion enable on player bump", то физические воздействия на этот объект со стороны игрока не будут учитываться;
  • Impact Damage Type - тип повреждений, который наносит этот объект другим объектам при ударе о них:
    • Blunt – тупой удар; при ударе генерируется повреждение с типом "CRUSH"; (см. filter_damage_type);
    • Sharp – острый удар; при ударе генерируется повреждение с типом "SLASH"; (см. filter_damage_type);
  • Disable Damage Forces - отключить силы, прикладываемые к объекту при получении им повреждений (Нет/Да); например: выстрел по объекту не сдвинет его с места;
  • Damage Filter – имя объекта-фильтра, который будет контролировать типы повреждений которые можно будет наносить этому объекту; (см. подробнее filter_damage_type или filter_multi);
  • Render Mode – режим рендеринга объекта;
  • FX Color (R G B) – цвет объекта;
  • FX Alpha (0-255) – прозрачность объекта; 255 – полностью не прозрачен; 0 - полностью прозрачен; не используется если свойство "Render Mode" равно "Normal" или "Don’t Render";
  • Render FX – эффект рендеринга объекта; например: мигание, плавное появление/исчезновение и т.п.;
  • Disable Shadows – отключить динамические тени, отбрасываемые этим объектом (Нет/Да);
  • Shadow Cast Distance - максимальное расстояние на которое распространяются динамические тени от этого объекта;
  • Fade Start Dist – расстояние от игрока до объекта, с которого объект начнёт плавно исчезать, а полностью исчезнет на расстоянии "Fade End Dist"; это расстояние должно быть меньше чем "Fade End Dist", но в игре они будут автоматически поменяны местами, если это не так; если значение этого свойства меньше нуля, то оно будет автоматически изменено и станет равным "Fade End Dist" - 400;
  • Fade End Dist – расстояние от игрока до объекта, на котором объект становится полностью не видимым, начав исчезать с расстояния "Fade Start Dist"; если значение этого свойства меньше или равно нулю, то функция исчезновения будет отключена для этого объекта;
  • Fade Scale – множитель для значений исчезновения объекта по умолчанию, используемых если:
    • движок запущен в режиме DX7 и ниже;
    • параметры исчезновения объектов настраиваются в объекте worldspawn (Hammer > Main menu > Map > Map properties...);
    • движок будет использовать свои значения по умолчанию, когда свойства "Fade Start Dist" и "Fade End Dist" не указаны;

во всех этих случаях можно контролировать исчезновение объекта вручную:

    • 0.0 – полностью отключить исчезновение, объект виден на любом расстоянии;
    • меньше 1.0 – исчезновение начнётся с большего расстояния и будет более

растянутым по времени;

    • больше 1.0 – исчезновение объекта начнётся на меньшей дистанции и будет выполнено быстрее обычного;
  • Minimum DX Level – запретить размещение этого объекта на карте при компиляции карты на компьютере, уровень аппаратной поддержки видеокарты которого ниже этого значения; используется только компилятором VBSP в процессе компиляции карты;
  • Maximum DX Level – запретить размещение этого объекта на карте при компиляции карты на компьютере, уровень аппаратной поддержки видеокарты которого выше этого значения; используется только компилятором VBSP в процессе компиляции карты.

Флаги

  • Start Asleep – объект будет "спать" в начале каждого раунда; объект не будет двигается пока его не "разбудят"; чтобы "разбудить" объект, нужно приложить к нему какую-нибудь силу (например: задеть его или выстрелить по нему) или вызвать функцию "Wake" или "EnableMotion"; не используется, если установлен флажок "Motion Disabled";
  • Motion Disabled – для объекта в начале каждого раунда автоматически будет вызвана функция "DisableMotion";
  • Debris – объект помечается как "Debris"; такие объекты не реагируют на прикосновения (Touch), поэтому они:
    • не контактируют друг с другом;
    • не контактируют с игроками;
    • не контактируют с гранатами, но получают повреждения от взрывов;
    • не контактируют с триггерами;
    • не выполняют своё событие "OnPlayerUse", когда игроки нажимают на них клавишу "Использовать"; однако при всём при этом такие объекты продолжают контактировать с миром;
  • Force Debris Touch Triggers – заставить объект контактировать с триггерами и выполнять своё событие "OnPlayerUse"; используется только если установлен флажок "Debris";
  • Break on Touch – объект сломается если игрок заденет его; будет ли объект ломаться зависит от типа материала, указанного в свойствах (может быть указано в "Material Type" и "Prop Data"); не используется если установлен флажок "Only Break on Trigger";
  • Break on Pressure – объект сломается если игрок окажет на него давление; например: когда игрок наступает на объект сверху; не используется если установлен флажок "Only Break on Trigger"; не используется если установлен флажок "Debris"; в свойстве "Pressure Delay" указывается задержка с момента оказания давления, до того как объект будет сломан;
  • Generate OnPlayerUse on +USE – событие "OnPlayerUse" выполняется всякий раз, когда игрок нажимает клавишу "Использовать" на этом объекте; (см. флажки "Debris" и "Force Debris Touch Triggers");
  • Prevent motion enable on player bump – не учитывать силу, прикладываемую игроком к этому объекту, когда игрок толкает этот объект; используется только если значение свойства "Force Amount to Enable Motion" не равно 0;
  • No physics collisions – объект не контактирует с любыми другими физическими объектами и миром, однако контактирует с игроком, может получать повреждения и может быть разрушен; при установленном флажке "Start Asleep" объект не "просыпается", когда игрок задевает его; если не установить флажок "Start Asleep" или "Motion Disabled", то объект в начале каждого раунда будет проваливаться сквозь карту.

Inputs

  • Wake – "разбудить" объект во время игры; (см. флажок "Start Asleep");
  • Sleep - "усыпить" объект во время игры; (см. флажок "Start Asleep");
  • EnableMotion – разрешить объекту двигаться; эта функция вызывается автоматически в момент выполнения условий для свойств "Health Level to Enable Motion" и/или "Force Amount to Enable Motion";
  • DisableMotion – запретить объекту двигаться; объект замирает в воздухе; в то время как объект неподвижен, он использует модель столкновений BSP, а не Vphysics; эта функция вызывается автоматически в начале каждого раунда, если используются свойства "Health Level to Enable Motion" и/или "Force Amount to Enable Motion";
  • DisableFloating - отключить взаимодействия объекта с водой; при этом объект будет пролетать через воду так, как будто бы воды не существует; законы физики под водой тоже не будут влиять на объект; после вызова этой функции включить взаимодействия с водой будет нельзя;
  • SetTeam <integer> - установить новое значение свойства "Team Num"; 2 – Террористы; 3 – Контр-Террористы;
  • Skin <integer> – установить новое значение свойства "Skin";
  • SetBodyGroup <integer> - установить новое значение свойства "Body Group";
  • Ignite – поджечь объект; объект будет подожжён только в том случае, если в модели "World Model" при её компиляции явно было указано, что она может быть подожжена; (см. пример модели "models/props_c17/oildrum001_explosive.mdl");
  • PhysDamageScale <float> - установить новое значение свойства "Physics Impact Damage Scale";
  • Break – удалить объект точно так же как это делает функция Kill;
  • SetHealth <integer> - переключиться на следующую анимацию объекта;
  • AddHealth <integer> – добавить объекту указанное количество здоровья;
  • RemoveHealth <integer> – отнять у объекта указанное количество здоровья;
  • EnableDamageForces – установить значение свойства "Disable Damage Forces" равным "No";
  • DisableDamageForces – установить значение свойства "Disable Damage Forces" равным "Yes";
  • SetDamageFilter <string> - установить новое значение свойства "Damage Filter";
  • Color <R G B> - установить новое значение свойства "FX Color";
  • Alpha <integer> – (от 0 до 255) установить новое значение свойства "FX Alpha";
  • EnableShadow – включить динамические тени от объекта;
  • DisableShadow – выключить динамические тени от объекта;
  • FadeMinDist <float> - установить новое значение свойства "Fade Start Dist";
  • FadeMaxDist <float> - установить новое значение свойства "Fade End Dist".

Outputs

  • OnAwakened - выполняется тогда, когда объект "просыпается"; (см. флажок "Start Asleep");
  • OnPlayerUse – выполняется тогда, когда игрок нажимает клавишу "Использовать" на этом объекте; выполняется только если установлен флажок "Generate OnPlayerUse on +USE";
  • OnMotionEnabled – выполняется тогда, когда для объекта вызывается функция "EnableMotion";
  • OnIgnite - выполняется тогда, когда объект воспламеняется при вызове функции "Ignite".
  • OnBreak – вызывается тогда, когда объект ломается;
  • OnHealthChanged <float> – вызывается тогда, когда у объекта изменится количество "жизни"; возвращает процент жизни относительно своего максимального значения (от 0.0 до 1.0).

Карта

csssdk_prop_physics.vmf

Используются объекты

  • prop_physics

Описание карты

На карте размещено три физических объекта в виде бочек. Та бочка, что поменьше, может быть разрушена обычными выстрелами по ней. При разрушении этой бочки произойдёт взрыв, который может разнести две другие бочки, поэтому сначала постреляйте по двум другим бочкам и посмотрите за их поведением. Самая правая бочка имеет изменённые физические параметры инерции, что при выстрелах по ней заставляет двигаться её неправдоподобно. Погоняйте её по карте и убедитесь в этом сами.

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