Объект func_physbox используется для создания обыкновенных брашей (Entity-браши), которые будут вести себя в игре как физические объекты.
Особенности использования:
-
Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
-
Объект должен быть установлен там, где будет использоваться.
-
На карте может быть установлено множество этих объектов.
-
Этот объект всегда обрабатывается на стороне сервера.
-
Объект НЕ отбрасывает Lightmap-тени, однако отбрасывает динамические тени.
-
Объект НЕ должен пересекаться с другими физическими объектами на карте.
Эти объекты при использовании их в игре дают не очень корректные физические столкновения с игроком, что может испортить игровой процесс. Например такие объекты при соприкосновениях с игроком могут подбросить его очень высоко вверх, а при падении игрок потеряет здоровье. Так же этот объект может помешать передвижению игроков, что скорей всего многим игрокам может не понравиться, а так же этот объект может способствовать высокому сетевому трафику, что так же может плачевно сказаться на игровом процессе для игроков. Во избежание вышеописанных проблем используется объект func_physbox_multiplayer, являющийся копией этого объекта, но имеющий упрощённую модель столкновений с игроком.
На некоторых серверах может быть использована не интерактивная физика. Такая физика включается консольной командой "sv_turbophysics 1". При этом игроки не могут сдвинуть физические объекты просто толкая их. Чтобы толкать физические объекты нужно использовать на них клавишу "Использовать". При использовании такого типа физики игроки могут вставать на физические объекты сверху без опасений быть сброшенным в результате неточностей физических расчётов.
Не так то просто найти достойное применение объекту func_physbox. Этот объект "запекает" на себе тени, и во время вращения или прочих манипуляций с объектом это очень хорошо заметно.
Team Num – команда к которой принадлежит этот объект (Нет/Террористы/Контр-Террористы); если игрок и этот объект находятся в одной команде, то игрок не сможет наносить визуальный урон объекту если на сервере mp_friendlyfire равно 0; (см. фильтр filter_activator_team);
Pitch Yaw Roll (Y Z X) – на эти углы будет повёрнут объект в начале каждого раунда;
Health – количество жизни у этого объекта; 0 – объект не может быть разрушен; используется только если свойство "Prop Data" равно "None", в противном случае уровень жизни объекта определяется свойствами материала "Prop Data";
Prop Data – физические свойства материала из которого создан объект; влияет на:
* количество жизни у объекта; при этом игнорируется значение свойства "Health";
* количество и размер кусочков объекта после его разрушения;
* влияние каждого типа повреждений на объект; например: деревянную поверхность можно разрушить огнём, а металлическую вообще нельзя ничем разрушить;
|
чтобы узнать какие свойства имеют материалы, смотрите файл:
/hl2/scripts/propdata.txt
или
/cstrike/scripts/propdata.txt |
Material Type – материал и внешний вид кусочков объекта после его разрушения; влияет на внешний вид кусочков объекта, на звук при разрушении объекта, и на некоторые физические свойства; эти физические свойства имеют больший приоритет перед свойствами "Prop Data";
Precise Gib Direction – направление, в котором будут лететь кусочки объекта при его разрушении; используется только если свойство "Gibs Direction" равно "Use Precise Gib Direction";
Solid to World – полностью отключить модель столкновений для этого объекта; если не установить флажок "Start Asleep" или "Motion Disabled", то объект в начале каждого раунда будет проваливаться сквозь карту;
Mass Scale – множитель массы объекта; 0 или 1.0 – масса не меняется; не используется если в свойстве "Physics Override Parameters" одним из параметров является "mass";
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 – множитель повреждений, наносимых объекту в результате физических взаимодействий; например: падение на землю, удар со стороны другого объекта или игрока и т.д.;
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 - максимальное расстояние на которое распространяются динамические тени от этого объекта;
Disable Receiving Shadows – отключить динамические тени от других объектов на этом объекте;
Minimum Light Level – минимальный уровень освещённости этого объекта; высокое значение этого свойства приведёт к тому, что объект станет очень ярким, будет хорошо заметен в темноте и на нём не будут различаться Lightmap-тени от других объектов; используется только в процессе компиляции карты;
Origin (X Y Z) – точка опоры объекта (указывается при помощи Helper’а).
Start Asleep – объект будет "спать" в начале каждого раунда; объект не будет двигается пока его не "разбудят"; чтобы "разбудить" объект, нужно приложить к нему какую-нибудь силу (например: задеть его или выстрелить по нему) или вызвать функцию "Wake" или "EnableMotion"; не используется, если установлен флажок "Motion Disabled";
Motion Disabled – для объекта в начале каждого раунда автоматически будет вызвана функция "DisableMotion";
Debris – объект помечается как "Debris"; такие объекты не реагируют на прикосновения (Touch), поэтому они:
* не контактируют друг с другом;
* не контактируют с игроками;
* не контактируют с гранатами, но получают повреждения от взрывов;
* не контактируют с триггерами;
* не выполняют своё событие "OnPlayerUse", когда игроки нажимают на них клавишу "Использовать";
однако при всём при этом такие объекты продолжают контактировать с миром;
Generate OnPlayerUse on +USE – событие "OnPlayerUse" выполняется всякий раз, когда игрок нажимает клавишу "Использовать" на этом объекте; (см. флажок "Debris");
Only Break on Trigger – объект не получает никаких повреждений и может быть сломан только вызовом некоторых функций из пункта "Inputs";
Break on Touch – объект сломается если игрок заденет его; будет ли объект ломаться зависит от типа материала, указанного в свойствах "Material Type" и "Prop Data"; не используется если установлен флажок "Only Break on Trigger";
Break on Pressure – объект сломается если игрок окажет на него давление; например: когда игрок наступает на объект сверху; не используется если установлен флажок "Only Break on Trigger";
Break immediately on Physics – объект сломается если его заденет любой другой физический объект; будет ли объект ломаться зависит от типа материала, указанного в свойствах "Material Type" и "Prop Data"; не используется если установлен флажок "Only Break on Trigger";
Don’t take physics damage – не получать повреждений в результате столкновений с физическими объектами.
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 – Контр-Террористы;
PhysDamageScale <float> - установить новое значение свойства "Physics Impact Damage Scale";
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 – выключить динамические тени от объекта.
OnAwakened - выполняется тогда, когда объект "просыпается"; (см. флажок "Start Asleep");
OnPlayerUse – выполняется тогда, когда игрок нажимает клавишу "Использовать" на этом объекте; выполняется только если установлен флажок "Generate OnPlayerUse on +USE";
OnMotionEnabled – выполняется тогда, когда для объекта вызывается функция "EnableMotion";
OnBreak – выполняется тогда, когда объект ломается;
OnHealthChanged <float> - выполняется в тот момент, когда у объекта изменяется уровень "здоровья"; эта функция возвращает число от 0.0 до 1.0 соответствующее проценту оставшегося у объекта "здоровья" по отношению к его максимальному уровню "здоровья".
Так же можно использовать энтию func_physbox_multiplayer
Объект func_physbox_multiplayer используется для создания обыкновенных брашей (Entity-браши), которые будут вести себя в игре как физические объекты. Физические объекты этого класса имеют упрощённую физическую модель столкновений с игроком, поэтому они очень хорошо подходят для сетевых игр.
Особенности использования:
* Является копией объекта func_physbox, с небольшими изменениями.
* Этот объект всегда обрабатывается на стороне сервера.
Свойства:
<см. func_physbox>