Темы:
Данная статья является переводом материала TutorialVehicle, размещенного на сайте LSL Wiki.
Создавать собственные транспортные средства в Second Life, а также управлять ими можно с помощью LSL (Linden Scripting Language). В данной статье рассматриваются основы функционирования транспортных средств, термины и понятия, используемые при их описании, а также детально рассказывается о применяемом API (Application Programming Interface).
Существует несколько способов заставить скриптовые объекты двигаться. Один из них – превращение объекта в транспортное средство. Транспортная функциональность является достаточно многосторонней, весьма универсальной и позволяет создавать объекты, способные скользить, парить, летать и плавать. Вот некоторые характеристики и свойства, которые могут быть активированы для таких объектов:
- отклонение линейной и угловой скорости от линии движения;
- ассиметричное линейное и угловое трение;
- парение над сушей/водой или на глобальной высоте;
- крен на виражах;
- линейный и угловой двигатели для тяги и поворотов.
Введение
Каждый скриптовый объект может быть транспортным средством какого-то одного типа, который конфигурируется через вызовы функций llSetVehicleType, llSetVehicleFloatParam, llSetVehicleVectorParam, llSetVehicleRotationParam, llSetVehicleFlags и llRemoveVehicleFlags, детальное описание которых будет приведено позже.
Следует отметить важный момент: характер поведения транспортного средства определяется несколькими настраиваемыми параметрами. В зависимости от их значений транспортное средство может менять курс движения как корабль на воде или мчаться как тележка по рельсам.
Установка флагов для транспортных средств позволяет вводить исключения для их стандартного поведения. Некоторые из этих флагов имеют силу только в том случае, когда активированы определенные характеристики. Например, установленный флаг VEHICLE_FLAG_HOVER_WATER_ONLY заставит транспорт игнорировать высоту местности, однако он имеет силу, только если транспортное средство находится в состоянии парения.
Предупреждение
Работа над реализацией транспортных функций в виртуальном мире не закончена, и, вероятно, в будущих версиях Second Life будут изменения. Некоторые характеристики и свойства транспортных средств при необходимости могут быть скорректированы для обеспечения стабильности и безопасности пользователей. В частности, границы многих параметров и их значения по умолчанию, описанные в приложениях, вероятно, подвергнутся изменениям, поэтому не стоит рассматривать их как окончательные.
Не рекомендуется смешивать свойства транспортных средств с некоторыми другими скриптовыми вызовами, которые реализуют воздействие ударов и силы на объекты, особенно llSetBuoyancy, llSetForce, llSetTorque и llSetHoverHeight.
В то время как следующие методы скорее всего не вызовут нестабильности, их поведение может конфликтовать с транспортными средствами и повлечь нежелательные и/или непредсказуемые результаты. Поэтому используйте llLookAt, llRotLookAt, llMoveToTarget и llTargetOmega на свой страх и риск.
Если вы обнаружили ошибку в работе транспорта, один из способов сообщить о проблеме – это предоставить копию транспортного средства и скрипт совместно с описанием проблемы Эндрю Линдену (Andrew Linden). Пожалуйста, всем своим заявкам давайте название "Bugged Vehicle XX" (проблемный транспорт), где XX – это ваши инициалы в Second Life. Транспортное средство и скрипт будут внимательно изучены при первом же удобном случае.
Определения
Термины roll (крен или наклон относительно продольной оси), pitch (тангаж или наклон относительно поперечной оси), и yaw (рыскание или поворот вокруг вертикальной оси) часто используются для описания типов вращения самолета или корабля. Они соответствуют типам вращения вокруг локальных осей x, y и z.

Рис. 01
Правило правой руки, знакомое всем из курса физики, используется здесь для определения положительного вращения относительно любой оси. Для примера давайте рассмотрим положительное вращение вокруг оси крена. Для того чтоб узнать, куда накренится самолет, мысленно направьте большой палец правой руки параллельно оси крена (x) в положительном направлении. Четыре пальца руки, сжатые в кулак, покажут направление вращения самолета.

Рис. 02
Многие параметры, определяющие свойства транспортного средства, выражаются в виде VEHICLE_BEHAVIOR_TIMESCALE.
Timescale или постоянная времени какого-либо свойства – это время, за которое разница между величиной воздействия на это свойство к величине его отклика уменьшается в e раз по сравнению с первоначальной разницей (e – натуральный показатель, равный приблизительно 2,718281828).
Другими словами, это показатель скорости экспоненциального приближения отклика свойства к воздействию на него. Если вы хотите, чтобы транспортное средство было очень восприимчивым, используйте малое значение постоянной времени, скажем, 1 секунду или менее. А если нужно отключить свойство, то используйте очень большое значение постоянной (300 секунд или больше).
Заметим, что в целях стабильности существует нижняя граница для постоянной времени: порядка одной десятой доли секунды. Установка значения в ноль безопасна и всегда эквивалентна его установке в минимальное значение. Любое свойство с постоянной времени может быть деактивировано установкой ее в достаточно большое значение.
Продолжение следует.
Источник TutorialVehicle














