logic_measure_movement

Описание

Объект logic_measure_movement отслеживает движения одного объекта относительно другого и применяет эти движения на третьем объекте.
Подробное описание действия этого объекта смотрите в пункте "Как это работает".
Особенности использования

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

Нельзя использовать в качестве объекта "Entity to Move" игроков, физические объекты, и прочие объекты имеющие модель столкновений, потому что все они имеют собственную модель взаимодействия с окружающим миром. Если указать игрока, то игрок будет стремиться упасть на землю под действием гравитации, а объект logic_measure_movement будет стараться удерживать его в рассчитанной точке. Это почти что во всех случаях приводит к ужасающе неправдоподобной анимации и гибели игрока. Если указать физический объект, то он не сможет быть использован объектом logic_measure_movement в тех случаях, когда совершает собственные физические движения, например: когда по нему выстрелят. В этих случаях физический объект будет перемещён в точку свой реально позиции, то есть в ту точку где бы он находился если бы не действия со стороны объекта logic_measure_movement, и будет находиться в этой точке до тех пор, пока не закончит выполнять собственные движения. Так же у физического объекта будет создано целых две модели столкновения, одна - в его реальной точке (не реагирующая на выстрелы, но реагирующая на прикосновения), и вторая - в точке, рассчитанной объектом logic_measure_movement (реагирующая на выстрелы, но не реагирующая на прикосновения). Остальные объекты, имеющие собственную модель столкновений, не должны быть использованы по тем же причинам что и физические объекты.
Заметки

Этот объект очень удобен, так как позволяет перемещать те объекты, которые не могут быть прикреплены к другим объектам через свойство "Parent". Такими являются абсолютно все объекты, которые не обновляются в каждом раунде. Если попробовать прикрепить такие объекты к обновляющимся объектам через свойство "Parent", то они будут автоматически удалены с карты (на все последующие раунды) в первом же раунде при первом обновлении объектов. Потребность в передвижении необновляющихся объектов возникает очень часто, поэтому умение применять объект logic_measure_movement всегда пригодится при создании ваших карт.
При выборе объекта "Entity to Measure" как правило встаёт вопрос: "какой объект подходит лучше всего для этого свойства?" Обычно приходится точно указывать точку, в которую будет помещён объект "Entity to Move", поэтому объект должен быть точечным. Первым объектом, который сразу приходит на ум, скорей всего будет объект info_target, потому что он точечный и как раз используется для указания простой точки на карте. Однако объект info_target не подходит, потому что он не обновляется в каждом раунде игры, а значит не может быть прикреплён к какому-либо объекту через свойство "Parent". Нужен другой точечный объект, который максимально прост, отнимает как можно меньше ресурсов игры и в то же время обновляется из раунда в раунд. Таких объектов несколько но наиболее используемым является объект env_spark с настройками по умолчанию. Объект env_spark является самым не требовательным к ресурсам точечным объектом, к тому же он обновляется в каждом раунде, может прикрепляться к любым объектам через свойство "Parent" и имеет хорошую заметную иконку в виде искр.
Как это работает

Со смещением:
Предположим, что у нас есть четыре объекта 1,2,3,4. 1 – это "Entity to Measure", 2 – это "Measure Reference", 3 – это "Entity to Move", 4 – "Movement Reference". Наша задача заставить объект 3 двигаться так же как объект 1. Теперь представим что из объекта 2 в объект 1 проведена линия, соединяющая эти объекты. Мысленно поместим эту линию в объект 4 так, чтобы объект 2 находился на месте объекта 4. В результате перемещения линии, та точка, в которой окажется объект 1, и будет являться расчётной точкой, куда будет помещен объект 3 в процессе игры. Углы поворота объекта 1 будут автоматически применяться к объекту 1, поэтому углы поворота не зависят от выбора объектов 2 и 4.
Без смещения, сохранение позиции:
Ознакомьтесь с п. "Со смещением". Теперь представим, что объекты 2 и 4 являются одним и тем же объектом, значит нам не придётся передвигать линию из объекта 2 в объект 4, а это означает, что объект 3 всегда будет находиться точно в том же месте где и объект 1, тем самым давая возможность точно указывать где будет находиться объект 3 во время игры.
Применительно для объекта logic_measure_movement, если в свойствах "Measure Reference" и "Movement Reference" указать имя одного и того же объекта, то это может значительно упростить процесс создания карты.
Параметры

Measurement Type – какой тип движений отслеживать у объекта "Entity to Measure":
Position – позиция (origin) и углы поворота (angles); удобно использовать если объект "Entity to Measure" является физическим объектом, или прикреплён к физическому объекту, потому что у физических объектов позиция и углы поворота меняются постоянно;
Eye Position – точка зрения объекта (EyePosition) и углы зрения объекта (EyeAngles); удобно использовать только в том случае, если объект "Entity to Measure" является игроком;
Entity to Measure – имя любого объекта, чьи движения будут отслеживаться;
Measure Reference – имя любого объекта, относительно которого будут измеряться движения объекта "Entity to Measure"; если значение этого свойства равно значению свойства "Movement Reference", то объект "Entity to Move" всегда будет находиться в точке объекта "Entity to Measure";
Entity to Move - имя любого объекта, который будет полностью повторять движения объекта "Entity to Measure";
Movement Reference – имя любого объекта, относительно которого будет двигаться объект "Entity to Move" при повторении движений объекта "Entity to Measure"; если значение этого свойства равно значению свойства "Measure Reference", то объект "Entity to Move" всегда будет находиться в точке объекта "Entity to Measure";
Movement Scale – масштаб смещения объекта "Entity to Move" относительно объекта "Movement Reference"; 1 – нормальный масштаб; 2 – объект "Entity to Move" находится на половине пути между нормальным смещением и объектом "Movement Reference"; 4 – объект "Entity to Move" находится на 1/4 пути между нормальным смещением и объектом "Movement Reference"; 0.5 – объект "Entity to Move" находится в два раза дальше от объекта "Movement Reference" чем при нормальном смещении.
Inputs

Enable – включить объект;
Disable – выключить объект;
SetMeasureTarget <string> - установить новое значение свойства "Entity to Measure";
SetMeasureReference <string> - установить новое значение свойства "Measure Reference";
SetTarget <string> - установить новое значение свойства "Measure Reference";
SetTargetReference <string> - установить новое значение свойства "Movement Reference";
SetTargetScale <float> - установить новое значение свойства "Movement Scale".
Карта

csssdk_logic_measure_movement.vmf
Используются объекты
logic_measure_movement
func_physbox
phys_keepupright
env_spark
move_rope
keyframe_rope
Описание карты
На карте размещено два шара, соединённых растягивающейся верёвкой, а так же два других шара, размещённых один над другим. Все шары являются объектами func_physbox, поэтому их можно передвигать по карте толкая их или стреляя по ним. Шары с верёвкой отлично демонстрируют использование объекта logic_measure_movement. При движении шаров концы верёвки всегда находится в точках прикрепления к шарам, что даёт хороший визуальный результат. Два остальных шара демонстрируют баг в работе объекта logic_measure_movement, подробно описанный в пункте "Ошибки". Баг заключается в том, что в качестве объекта "Entity to Move" был выбран физический объект func_physbox. Побегайте рядом с этими шарами и понаблюдайте как проявляется баг. Скорей всего, результат будет для вас неожиданным и интересным.
Смотрите также

env_spark_(Source)



Комментарии

Оставьте комментарий

Опрос

Вы пользуетесь горячими клавишами в Hammer'е?

Категории раздела

info_ [16]
item_ [7]
light_ [4]
logic_ [8]
filter_ [5]
phys_ [5]
player_ [0]
point_ [2]
prop_ [11]
trigger_ [8]
math_ [3]
path_ [0]
Прочее [10]
Ai_ [2]
env_ [45]
game_ [5]
func_ [39]

МИНИ-ЧАТ

Друзья сайта

HL2 & Source Games

Mapper720.Ru - сайт о маппинге Half-life 2

 

Статистика


Онлайн всего: 1
Прохожих: 1
Пользователей: 0


Сегодня нас посетили:

Приветствуем нового пользователя:
Noug4at

Новое в AgnesTeam

Теги

smd expotrer smd importer smd плагин 3ds max тутор запор запорожец модель для чайников ленивых Displacement 3ds Max Hammer source создание модели 3D Ripper 3D Ripper DX 3d ripper dx туториал 3D Ripper DX уроки 3D ripper урок 3dr риппер Combine HUD Suit Туториал refract понтовый эффект преломление текстуры Source sdk SkyBox небо скайбокс создание skybox создание скайбокса маппинг portal 2 Portal 2 панели панели веры портал 2 Portal gel source sdk урок гель гель отталкивающий гель туторы source sdk мосты плотного света тутор туторы portal 2 уроки портал 2 строим карту portal 2 hammer editor кейв джонсон туториал portal 2 панели урок source sdk вспышки от выстрелов game_ Ui кодинг облагораживание мода покачивание камеры коддинг создание кода prop_static prop_physics_override энтити prop_ prop_dynamic_ornament физика phys_pulleyconstraint phys_ballsocket Phys_ физика Source phys_motor Left4Dead2: ep2 Episode 2 маппинг машина радар