Func breakable surf

Материал из CSM Wiki
Версия от 20:20, 26 сентября 2009; Kogemyaka (обсуждение | вклад) (Новая страница: «{{sdk beginsrc}} [http://developer.valvesoftware.com/wiki/Func_breakable_surf Func_breakable_surf] == Описание == Объект func_breakable_surf испол…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Оригинал Func_breakable_surf

Описание

Объект func_breakable_surf используется для создания разрушаемых стеклянных поверхностей.

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

  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект должен быть установлен там, где будет использоваться.
  • На карте может быть установлено множество этих объектов
  • Объект НЕ отбрасывает Lightmap-тени и динамические тени.
  • Для правильной работы объекта необходимо:
    • 1. полностью покрыть его материалом NODRAW (tools/toolsnodraw);
    • 2. выбрать ОДНУ любую прямоугольную поверхность объекта и наложить на неё специальный материал glass/glasswindowbreak070a; если поверхность не будет прямоугольной, то в игре она автоматически будет преобразована в прямоугольную прямо во время разрушения стекла.

Ошибки

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

Заметки

Материал для стекла вы можете сделать сами, если посмотрите как созданы материалы glass/glasswindowbreak070a и glass/glasswindowbreak070b.

Параметры

  • Prop Data – физические свойства материала из которого создан объект; влияет на:
    • количество жизни у объекта; при этом игнорируется значение свойства "Health";
    • количество и размер кусочков объекта после его разрушения;
    • влияние каждого типа повреждений на объект; например: деревянную поверхность можно разрушить огнём, а металлическую вообще нельзя ничем разрушить; чтобы узнать какие свойства имеют материалы, смотрите файл: /hl2/scripts/propdata.txt или /cstrike/scripts/propdata.txt

Prop Data - (должно быть всегда равно "Glass.Window");

  • Material Type – (должно быть всегда равно "Glass");
  • Surface Type – (должно быть всегда равно "Glass");

Шаблон:Sdk param Fragility

  • Upper-left corner (Read-Only) – значение этого поля автоматически заполняется редактором Hammer;
  • Upper-right corner (Read-Only) – значение этого поля автоматически заполняется редактором Hammer;
  • Lower-left corner (Read-Only) – значение этого поля автоматически заполняется редактором Hammer;
  • Lower-right corner (Read-Only) – значение этого поля автоматически заполняется редактором Hammer;
  • Error Level (Read-Only) – значение этого поля автоматически заполняется редактором Hammer;
  • Pressure Delay - задержка перед тем как сломаться от давления, оказываемого со стороны другого объекта или игрока (секунды); работает только при включенном флажке "Break on Pressure";
  • 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 – эффект рендеринга объекта; например: мигание, плавное появление/исчезновение и т.п.;
  • Minimum Light Level – минимальный уровень освещённости этого объекта; высокое значение этого свойства приведёт к тому, что объект станет очень ярким, будет хорошо заметен в темноте и на нём не будут различаться Lightmap-тени от других объектов; используется только в процессе компиляции карты;

Флаги

  • Crack Decals - #назначение не известно#; #возможно не работает#;
  • Take Damage from Held Objects – объект сломается если игрок заденет его и в момент прикосновения объекта будут касаться какие-нибудь физические объекты;

Шаблон:Sdk param break on pressure Шаблон:Sdk param break immediately on physics Шаблон:Sdk break on pressure

Inputs

  • Shatter <X Y RADIUS> - сломать объект в координатах X Y и сделать отверстие в этом месте радиусом RADUIS; координаты X и Y должны быть значениями от 0.0 до 1.0, где "0 0" – верхний левый угол, "1 1" – правый нижний угол;
  • Break – удалить объект точно так же как это делает функция Kill;
  • SetHealth <integer> - переключиться на следующую анимацию объекта;
  • AddHealth <integer> – добавить объекту указанное количество здоровья;
  • RemoveHealth <integer> – отнять у объекта указанное количество здоровья;
  • SetDamageFilter <string> - установить новое значение свойства "Damage Filter";
  • Color <R G B> - установить новое значение свойства "FX Color";
  • Alpha <integer> – (от 0 до 255) установить новое значение свойства "FX Alpha";

Outputs

  • OnBreak – вызывается тогда, когда объект ломается;

Шаблон:Sdk OnHealthChanged

Карта

csssdk_func_breakable_surf.vmf

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

  • func_breakable_surf
  • func_button
  • func_detail
  • trigger_once
  • filter_damage_type
  • env_cubemap
  • weapon_smokegrenade
  • weapon_hegrenade

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

На карте поставлено несколько стёкол. Первое стекло имеет увеличенную прочность, благодаря которой его кусочки могут висеть в воздухе. Это выглядит не очень реалистично но таким настройкам тоже можно найти применение. Второе стекло поставлено со стандартными настройками. В него можно пострелять и посмотреть как оно разрушается. Третье стекло имеет очень низкую прочность, поэтому любое повреждение этого стекла приведёт к моментальном обрушению всех его кусочков. Выглядит довольно зрелищно. Так как нет нормального способа, позволяющего разбивать стёкла в момент касания его игроком, для четвёртого окна был поставлен объект trigger_once, охватывающий всю поверхность окна. Когда игрок касается объекта trigger_once, вызывается функция "Shatter" и стекло трескается, но не ломается. Ломаться стекло начнёт когда игрок пройдёт сквозь него. Для игрока это выглядит так, как будто бы он надавил на стекло и оно треснуло. Очень полезный приём, позволяющий реалистично разбивать стёкла. Обратите внимание, что объект trigger_once полностью покрывает Brush стекла, поэтому стекло разбивается даже в том случае, когда игрок подойдёт к нему сзади. Пятое стекло можно разбить нажатием на кнопку пульта, либо бросив в него гранатой. По-другому это стекло не разбить. Для стекла установлен фильтр повреждений filter_damage_type, который запрещает любой тип повреждений, кроме типа "CLUB". Именно такой тип повреждений наносят гранаты когда попадают во что-нибудь. Обратите внимание, что взрывом это стекло не разбить. На стекле остаются следы от пуль, однако они остаются только с одной стороны стекла. Можете сами в этом убедиться, обойдя стекло с другой стороны. Когда стекло треснет для него по-прежнему останется действовать фильтр повреждений filter_damage_type. Это приведёт к тому, что через такое стекло можно будет беспрепятственно стрелять, но нельзя будет "добить" стекло, кроме как бросить в него ещё гранат или пройти сквозь него. Чтобы избежать подобного в ваших картах, вам нужно добавить для такого стекла новый Output:

OnBreak | !self | SetDamageFilter | <none>

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

Последнее стекло расположено горизонтально. Его можно сломать чем угодно, но создано оно для того, чтобы показать что будет, когда игрок встанет сверху на стекло. Когда игрок встанет на стекло, оно издаст звук и через 2 секунды разрушится, но разрушится не так, как это было в случае с другими стёклами на карте, а так, как будто бы оно создано при помощи объекта func_breakable. Не очень реалистично и выглядит по-топорному.

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