Point anglesensor

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

Оригинал Point_anglesensor

Описание

Объект point_anglesensor используется для определения когда какой-нибудь объект "смотрит" в на другой объект.

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

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

Ошибки

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

Параметры

  • Target Entity Name – имя объекта, чьи углы поворота будут отслеживаться;
  • Start Disabled – выключать объект в начале каждого раунда (Нет/Да);
  • Look At Entity – имя объекта, на который должен будет смотреть объект "Target Entity Name", чтобы выполнилось событие "OnFacingLookat";
  • Duration – время в течение которого объект "Target Entity Name" должен смотреть на объект "Look At Entity", чтобы сработало событие "OnFacingLookat" (секунды);
  • Tolerance (deg) – на какое максимальное количество градусов может отклониться направление "взгляда" объекта "Target Entity Name" от направления "взгляда" на объект "Look At Entity", чтобы считалось что объект "Target Entity Name" смотрит на "Look At Entity".

Inputs

  • Enable – включить объект;
  • Disable – выключить объект;
  • Toggle – переключить состояние объекта (Включен/Выключен);
  • Test – проверить, смотрит ли объект "Target Entity Name" на объект "Look At Entity".

Outputs

  • OnFacingLookat – выполняется тогда, когда объект "Target Entity Name" смотрит на объект "Look At Entity" в течение времени "Duration";
  • OnNotFacingLookat – выполняется, когда объект "Target Entity Name" не смотрит на объект "Look At Entity"; выполняется только при вызове функции "Test";
  • TargetDir <vector> - возвращает направление взгляда объекта "Target Entity Name"; это событие выполняется даже тогда, когда объект "Target Entity Name" неподвижен; выходной вектор этого события может быть использован в следующих функциях:

- объект func_breakable_surf, функция "Shatter"; - объект keyframe_rope, функция "SetForce"; - объект move_rope, функция "SetForce"; - объект shadow_control, функция "Direction";

  • FacingPercentage <float> - возвращает значение от 0.0 до 1.0 и определяет насколько точно объект "Target Entity Name" смотрит на объект "Look At Entity"; 0.0 – смотрит под углом "Tolerance" или больше; 0.5 – смотрит под углом равным половине угла "Tolerance"; 1.0 – смотрит точно в направлении объекта "Look At Entity"; это событие выполняется даже тогда, когда объект "Target Entity Name" неподвижен.

Карта

csssdk_point_anglesensor.vmf

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

  • point_anglesensor
  • func_button
  • func_detail
  • env_spark
  • info_target
  • func_physbox
  • prop_physics
  • math_colorblend
  • phys_hinge
  • env_steam
  • func_rotating
  • env_laser
  • info_overlay

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

На карте установлено несколько угловых детекторов для разных объектов.

Первая вращающаяся стрелка (слева от точки появления игроков) проверяет: смотрит ли она на объект info_target, расположенный рядом. Если смотрит, то из земли пойдёт пар.

Вторая вращающаяся стрелка (справа от точки появления игроков), так же как и первая проверяет: смотрит ли она на объект info_target, расположенный рядом. В отличие от первой стрелки, пар для этой стрелки пойдёт лишь спустя 2 секунды, как она начнёт смотреть на свой info_target.

Третья вращающаяся стрелка, расположенная чуть дальше первой, изменяет свой цвет в зависимости от того насколько точно она смотрит на свой info_target. Чем точнее она смотрит на info_target, тех зеленее она выглядит. Перед этой стрелкой стоит пульт с кнопкой. Нажатие на кнопку пульта вызывает функцию "Test" для объекта point_anglesensor, которая заставляет выполняться событие "OnFacingLookat" или "OnNotFacingLookat".

Последняя стрелка на карте демонстрирует что цель "Look At Entity" так же может быть подвижна, как и сам объект "Target Entity Name".

В качестве демонстрации возможного применения объекта point_anglesensor на практике, на карту была помещена "лазерная пушка". При помощи пульта управления направьте лазерный луч на мишень на стене. Если направление лазерного луча будет достаточно точным, то с верху стены упадёт бочка.

Обратите внимание, что некоторые Brush-объекты, помещённые на карту, повёрнуты в редакторе Hammer вовсе не так как они повёрнуты в игре. Это особенности Brush-объектов, которая не позволяет указывать им угол поворота до компиляции карты. В нашем случае, нам нужны точные углы поворота но так же необходимо "отворачивать" Brush-объекты в начале раунда. Чтобы Brush-объекты автоматически повернулись на нужный угол в начале каждого раунда для них просто указывается свойство "Pitch Yaw Roll (Y Z X)" (keyvalue = angles). Особенно важно понимать и знать, что Brush-объекты поворачиваются на нужный угол до того как будет выполнена привязка объектов через свойство "Parent". А это подразумевает, что нужно указывать свойство "Pitch Yaw Roll (Y Z X)" для всех зависимых друг от друга Brush-объектов. На карте таким образом была повёрнута первая стрелка и лазерная пушка. Что касается объекта env_laser, для него нужно обязательно указывать свойство "Pitch Yaw Roll (Y Z X)", иначе его лазерный луч будет отображён с ошибкой. Это баг, о котором можете подробнее почитать в пункте "Ошибки" объекта env_laser.

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