Logic lineto

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

Оригинал Logic_lineto

Описание

Объект logic_lineto используется для расчёта вектора между двумя любыми объектами.

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

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

Ошибки

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

Заметки

Этому объекту крайне сложно найти применение на карте, потому что в игре CS:S, да и вообще в движке Source в целом, очень мало функций и объектов, приспособленных для приёма вектор в качестве входного параметра. Наиболее логичным является использование объекта logic_lineto совместно с объектом func_breakable_surf, направляя выходной вектор объекта logic_lineto в функцию "Shatter" объекта func_breakable_surf. Но чтобы это применить нужно изрядно постараться. Смотрите как это сделано на карте-примере этого объекта.

Параметры

  • Start Entity – имя первого объекта;
  • End Entity – имя второго объекта.

Outputs

  • Line <vector> - возвращает вектор между объектами "Start Entity" и "End Entity"; это событие выполняется постоянно, даже тогда, когда объекты "Start Entity" и "End Entity" неподвижны; выходной вектор этого события может быть использован в следующих функциях:
  • объект func_breakable_surf, функция "Shatter";
  • объект keyframe_rope, функция "SetForce";
  • объект move_rope, функция "SetForce";
  • объект shadow_control, функция "Direction".

Карта

csssdk_logic_lineto.vmf

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

  • logic_lineto
  • info_target
  • func_movelinear
  • func_button
  • func_detail
  • point_template
  • logic_relay
  • func_breakable_surf
  • filter_damage_type
  • point_spotlight
  • logic_auto
  • ambient_generic

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

Карта выполнена в ночном стиле. Эта карта сложна для изучения.

На карте установлено большое разбивающееся стекло, созданное при помощи объекта func_breakable_surf. Это стекло можно разбить только функцией "Shatter", потому что для него установлен фильтр повреждений filter_damage_type, делающий стекло "неуязвимым". Нажмите на кнопку пульта и посмотрите как на стекле будет рисоваться смайлик.

Все объекты (в том числе и logic_lineto), необходимые для разбивания стекла, создаются при помощи объектов point_template. Это сделано для того, чтобы объекты logic_lineto не разбивали окно преждевременно, а делали это только тогда, когда этого пожелает игрок. Каждый объект logic_lineto использует по два объекта для вычисления своего вектора: первый - info_target, второй - func_movelinear. Для получения нужного вектора, каждый объект func_movelinear должен находиться относительно своего logic_lineto в строго вымеренной точке. Итак, для функции "Shatter" объекта func_breakable_surf необходимо передать вектор в виде "X Y RADIUS", где "X" и "Y" должны варьироваться в диапазоне значений от 0 до 1, и определять координату точки на окне, в которой будет создана дыра радиусом "RADIUS". Применительно для объекта logic_lineto: "X Y RADIUS" – это расстояния между объектом info_target и func_movelinear по осям X, Y и Z соответственно. Сначала было установлено расстояние Z, тем самым сразу определившись с радиусом отверстий. Затем на виде сверху в редакторе Hammer был выбран минимальный размер сетки (Snap Grid), равный 1 юниту. Относительно объектов info_target, все объекты func_movelinear были выставлены в точке, соответствующей расположению дыр на окне. Достичь нужной точности помогло передвижение объектов func_movelinear с зажатой клавишей "ALT" на клавиатуре. В завершение, для объектов func_movelinear было указано направление и скорость их движений. Обратите внимание, что все клонируемые объекты после завершения своей работы удаляются функцией "Kill". Это сделано для того, чтобы объекты logic_lineto не создавали лишнюю нагрузку на сервер после выполнения своей задачи на карте.

Вы можете начать новый раунд, чтобы разбивать окно снова и снова. Для этого выполните в консоли команду "mp_restartgame 1".

Как можете заметить, применение объекта logic_lineto является довольно сложной процедурой, требующей от автора карты хорошего понимания принципа действия всех составляющих сцены, а так же определённой сноровки по манипулированию объектами.