Темы:
Данная статья является продолжением перевода материала TutorialVehicle, размещенного на сайте LSL Wiki. Начало читайте здесь.
Задание типа транспортного средства
Перед установкой любого параметра транспортного средства объекту должен быть назначен какой-либо тип транспорта. Это выполняется посредством вызова функции llSetVehicleType с любым параметром VEHICLE_TYPE_*, кроме VEHICLE_TYPE_NONE, который отменит принадлежность объекта к классу транспортных средств. На данный момент доступны следующие типы транспортных средств:

В скором времени будут доступны и другие типы.
Установка типа транспорта необходима для активации его свойств и установки всех параметров в значения по умолчанию. Очень важно помнить, что значения по умолчанию не являются оптимальными установками ни для какого типа транспорта, и в дальнейшем они будут изменены. Не особо полагайтесь на стандартные значения, если только это не оговорено специально.
Если вы захотите создать уникальное или экспериментальное транспортное средство, вам все равно необходимо будет сначала назначить для объекта один из типов транспорта, а затем вы сможете изменять любые параметры и флаги в пределах допустимых диапазонов значений.
Установка типа транспортного средства для объекта не означает, что он автоматически будет взят под контроль для управления его движением. Однако если вы сделаете это для свободно расположенного на уклоне объекта, то он может начать двигаться.
Мы ищем новые улучшенные стандартные параметры для разных типов транспортных средств. Если вы считаете, что подобрали комплекс параметров лучше существующих стандартных для автомобиля, корабля или любого другого типа транспортного средства, то можете предоставить список установок Эндрю Линдену в виде скрипта или посредством их описания.
Линейное и угловое смещение
Обычным свойством реальных транспортных средств является их тенденция к движению вдоль предпочтительной оси движения (preferred axes of motion). Иными словами, по причине наличия у них колес или крыльев, особенностей формы или методов приведения их в движение, транспортные средства стремятся двигаться вдоль осей, которые статичны по отношению к их каркасу. Это общее свойство определяет класс транспортных средств, и по формальным признакам обычный дротик можно отнести к этому классу объектов. Дротик может кувыркаться в полете, но в задней части у него есть оперение, служащее для того, чтобы направлять острие дротика по линии движения – такой эффект выравнивания мы называем угловым смещением (angular deflection).
Объект на колесах демонстрирует другое поведение: когда вы оказываете направленное воздействие на скейтборд, он стремится к результирующему движению по направлению, в котором он будет свободно катиться – мы называем такой эффект линейным смещением (linear deflection).
Таким образом, типичное транспортное средство в Second Life является объектом, которому свойственны линейное и/или угловое смещение относительно предпочтительной оси движения. По умолчанию предпочтительные оси движения – это локальные оси x, y и z локального каркаса (local frame) рутового примитива транспортного средства. Проявление эффекта смещения относительно оси x: линейное смещение стремится повернуть вектор скорости объекта до его совпадения с положительным направлением локальной оси x объекта, а угловое смещение переориентирует объект таким образом, чтобы его ось x была направлена по линии движения. Другие оси относятся к проявлениям других свойств транспортного средства, которые описаны ниже. Например, вертикальная сила тяжести старается поддерживать локальную ось z объекта параллельно мировой оси z. Оси транспортного средства могут быть повернуты относительно его действительных локальных осей с помощью параметра VEHICLE_REFERENCE_FRAME. Детально этот параметр мы рассмотрим позже.
В зависимости от вида транспортного средства желательно иметь большой или малый уровень линейного и/или углового смещения. Скорость смещений задается установкой соответствующих параметров с помощью процедуры llSetVehicleFloatParam. Каждая разновидность смещения имеет постоянную времени, которая определяет, как быстро произойдет полное смещение. Например, постоянная времени углового смещения типичного дротика может быть равной двум секундам, а тот же параметр для линейного смещения – несколько секунд. В таком случае дротик будет стремиться переориентироваться, перед тем как он изменит направление движения. Для задания указанных величин нужно записать такие строки:
llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_TIMESCALE, 2.0);
llSetVehicleFloatParam(VEHICLE_LINEAR_DEFLECTION_TIMESCALE, 6.0);
Каждый вид смещения имеет параметр "эффективность" (efficiency), который изменяется в пределах от 0.0 до 1.0. В отличие от параметров эффективности других характеристик, диапазон значений эффективности смещения простирается не от, скажем, "гибкий" до "жесткий", а от "нет смещения" (0.0) до "максимальное смещение" (1.0). Суть эффективности смещения чем-то напоминает таковую постоянной времени смещения, приведенную к диапазону 0.0 – 1.0.
Продолжение следует.
Источник TutorialVehicle














