protected void headTurn(float f) {
if (actor == Main3D.cur3D().viewActor()
&& AS.astatePilotStates[0] < 90) {
boolean bool = false;
switch (get_task()) {
case 2:
if (Leader != null) {
Ve.set(Leader.Loc);
bool = true;
}
break;
case 6:
if (target != null) {
Ve.set(target.Loc);
bool = true;
}
break;
case 5:
if (airClient != null) {
Ve.set(airClient.Loc);
bool = true;
}
break;
case 4:
if (danger != null) {
Ve.set(danger.Loc);
bool = true;
}
break;
case 7:
if (target_ground != null) {
Ve.set(target_ground.pos.getAbsPoint());
bool = true;
}
break;
}
float f_256_;
float f_257_;
if (bool) {
Ve.sub(Loc);
Or.transformInv(Ve);
tmpOr.setAT0(Ve);
f_256_ = tmpOr.getTangage();
f_257_ = tmpOr.getYaw();
if (f_257_ > 107.0F)
f_257_ = 107.0F;
if (f_257_ < -107.0F)
f_257_ = -107.0F;
if (f_256_ < -22.0F)
f_256_ = -22.0F;
if (f_256_ > 57.0F)
f_256_ = 57.0F;
} else if (this.maneuver == 88) {
f_256_ = 0.0F;
f_257_ = 107.0F;
} else if (this.maneuver == 89) {
f_256_ = 0.0F;
f_257_ = -107.0F;
} else if (this.maneuver == 90) {
f_256_ = 0.0F;
f_257_ = 90.0F;
} else if (this.maneuver == 91) {
f_256_ = 0.0F;
f_257_ = -90.0F;
} else if (get_maneuver() != 44) {
f_256_ = 0.0F;
f_257_ = 0.0F;
} else {
f_257_ = -15.0F;
f_256_ = -15.0F;
}
if (Math.abs(pilotHeadT - f_256_) > 3.0F) {
Maneuver maneuver_258_ = this;
maneuver_258_.pilotHeadT
= (maneuver_258_.pilotHeadT
+ 90.0F * (pilotHeadT > f_256_ ? -1.0F : 1.0F) * f);
} else
pilotHeadT = f_256_;
if (Math.abs(pilotHeadY - f_257_) > 2.0F) {
Maneuver maneuver_259_ = this;
maneuver_259_.pilotHeadY
= (maneuver_259_.pilotHeadY
+ 60.0F * (pilotHeadY > f_257_ ? -1.0F : 1.0F) * f);
} else
pilotHeadY = f_257_;
((NetAircraft) actor).setHeadAngles(pilotHeadY, pilotHeadT);
}
}
Вот повороты головы ИИ. Многие говорят там только анимация.
Они могут следить за ведущим, за воздушной целью, за опасностью, за игроком и за наземной целью.