Приветствую, любители авиации.
Самолётов в игре мало, делать их одному долго, да и лень уже. Поэтому делюсь с вами наработками, может кто нибудь займётся этим делом. Я использую экспорт в obj с опцией flip YZ, поэтому оси могут отличаться если вы импортируете как то иначе.
Когда и на какой угол вращать управляющие поверхности, игра решает сама. Мы можем лишь указать, что считать этими поверхностями.
Закрылки, элероны и элеватор игра будет вращать только вокруг оси У этих поверхностей, поэтому придётся повозится с установкой пивота, а затем с установкой этих поверхностей на место в самолёте.
Пример с правым закрылком:
а) Готовим поверхность к экспорту. Пивот XYZ = 0, PRY = 0. Внимание на расположение осей. Важно расположить поверхность параллельно оси вращения, а не так как она будет стоять на самолёте.
б) ставим поверхность на место,
в) проверяем как она будет вращаться в игре, изменяя значение в окне У
если на этапе а) не ошиблись, то будет так:
пример последствий неправильной установки на этапе а)
г) т.к. я импортировал с переворачиванием осей, то и записывал в файл mdl с учётом этого.
д) записываем номер ID закрылки в настройки модели. Важно что номера управляющих поверхностей считаются от общего числа всех дочерних объектов модели, а не локально, как для запуска событий анимации.
Левый закрылок можно записать через flipY, вращаться будет как надо.
Руль направления будет вращаться вокруг оси Z
Устанавливать реалистичные цифра в настройках metadata не стоит, самолёты в отличие от поездов не движутся строго по линиям:
weight = 9000.0, -- кг. вместе с wingArea влияет на скорость на участках взлёта\посадки и на радиус поворота в воздухе. b747 с реалистичной массой улетел далеко за пределы карты, пришлось уменшать на 50%.
maxPayload = 0, -- Один из множества обрубков не реализованных разработчиками.
maxTakeOffWeight = 15000.0, -- влияния загрузки на характеристки полёта не замечал, поэтому настривать лучше базовый вес.
maxThrust = 110000.0, -- kN. влияет на разгон при взлёте.
idleThrust = 3000.0, -- kN. вместе с weight влияет на скорость при рулении по земле
timeToFullThrust = 1.5,
wingArea = 35.0, -- м^2, смотри weight
topSpeed = 135.0, -- м*с.
Анимация уборки\выпуска шасси запускается событиями open_wheels close_wheels, id элементов которые включат анимацию считаются локально в файле.
Интерцепторов в игре нет, события под включения реверса тоже. Вообще в самолётах много чего не доделано, впрочем как и во всей игре.