Показать сообщение отдельно
Старый 31.03.2019, 01:25   #2
carsmaster
Пытающийся полететь
 
Аватар для carsmaster
 
Регистрация: 21.05.2009
Адрес: Сталинград
Сообщений: 2,424
Отправить сообщение для carsmaster с помощью ICQ Отправить сообщение для carsmaster с помощью Skype™
По умолчанию

Так же внизу класса надо дописать код(красным), чтобы класс знал вообще новые параметры, выше и ниже для ориентира приведены дефолтные строки


public Autopilotage AP;
public Controls CT;
public float SensYaw;

public float SensYawGround;
public float SensYawAir;


public float SensPitch;
public float SensRoll;

В баттонс во флайтмодель конкретного самолета(или внешней ФМ) надо добавить новый параметр вот так (выделено красным):

[Params]
CriticalAOA 16.00
CriticalCy 01.52
CxCurvature 00.70
CxStraightness 00.08
CriticalAOAFlap 20.00
CriticalCyFlap 01.70
SpinTailAlpha 17.00
SpinCxLoss 0.07
SpinCyLoss 0.03
Vyfac 1.0
Tfac 1.1
Vmin 170.0
Vmax 567.0
VmaxAllowed 780.0
VmaxH 656.0
HofVmax 4100.0
VminFLAPS 130.0
VmaxFLAPS 260.0
Vz_climb 23.0
V_climb 250.0
T_turn 17.5
V_turn 340.0
K_max 15.0
Cy0_max 0.15
FlapsMult 1.0
FlapsAngSh 6.0
Range 648.0
CruiseSpeed 420.0
SensYaw 0.48
SensPitch 0.65
SensRoll 0.25
SensYawGround 0.24 // ПОДБИРАЙТЕ значение сами
[Polares]


Теперь о коде в классе самого самолета, без которго ничего не будет работать
и останется по прежнему чувствительной одинаковой для всех случаев.

В классе многих самолетов есть код вида(для примера взят дефолт Yak_3):

public void update(float f)
{
hierMesh().chunkSetAngles("OilRad_D0", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 25F, 0.0F);
hierMesh().chunkSetAngles("Water_luk", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 12F, 0.0F);
super.update(f);
}


Надо его дополнить по образцу:
public void update(float f)
{
if(FM.Gears.onGround())
FM.SensYaw = FM.SensYawGround;
else
if(!FM.Gears.onGround())
FM.SensYaw = FM.SensYawAir;


hierMesh().chunkSetAngles("OilRad_D0", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 25F, 0.0F);
hierMesh().chunkSetAngles("Water_luk", 0.0F, ((FlightModelMain) (super.FM)).EI.engines[0].getControlRadiator() * 12F, 0.0F);
super.update(f);
}

Описание:
if(FM.Gears.onGround())
FM.SensYaw = FM.SensYawGround;
Если шасси самолета находятся на земле то работает новый параметр SensYawGround
else
if(!FM.Gears.onGround())
FM.SensYaw = FM.SensYawAir;

Если шасси оторвались земли, то переключается на SensYawAir , тоест дефолтный обычный параметр
SensYaw чувствительности руля направления.
Аналогично и на посадке, шасси коснулись земли и включается "наземная" чувствительность.

Если похожего кода нету в классе самолета, то просто добавляем его полностью в класс

public void update(float f)
{
if(FM.Gears.onGround())
FM.SensYaw = FM.SensYawGround;
else
if(!FM.Gears.onGround())
FM.SensYaw = FM.SensYawAir;
super.update(f);
}


Ну и конечно не забываем сотворить новый баттонс с измененой флайтмоделью КОНКРЕТНОГО самолеты,
путем добавления нового параметра.

Само значение нового параметра SensYawGround подбирайте сами, я для тестов брал половину от существующего параметра.

Тоесть было в баттонсе(файлефлайтмодели) для Yak_3 SensYaw 0.48

Я для тестов назначал новому параметру SensYawGround 0.24.

Извините за много букфффф.... Но по другому никак...

Последний раз редактировалось carsmaster; 31.03.2019 в 01:45.
carsmaster вне форума   Ответить с цитированием