Jelajahi Sumber

scale flyingvehicle ai pitch by the amount yaw forces it to roll

AzaezelX 5 bulan lalu
induk
melakukan
6efb3843f6
1 mengubah file dengan 7 tambahan dan 0 penghapusan
  1. 7 0
      Engine/source/T3D/AI/AIController.cpp

+ 7 - 0
Engine/source/T3D/AI/AIController.cpp

@@ -779,6 +779,13 @@ void AIFlyingVehicleControllerData::resolvePitch(AIController* obj, Point3F loca
    F32 lastPitch = fvo->getSteering().y;
    movePtr->pitch = 0.0f;
    F32 dotPitch = -mDot(up, toTarg);
+
+   FlyingVehicleData* db = static_cast<FlyingVehicleData*>(fvo->getDataBlock());
+
+   F32 rollAmt = mFabs(fvo->getThrottle()* movePtr->yaw * db->steeringRollForce);
+   dotPitch *= 1.0-(mClampF(rollAmt, 0.0,1.0)); // reduce pitch by how much we're rolling
+   dotPitch *= M_PI_F;
+
    if (mFabs(dotPitch) > 0.05f)
          movePtr->pitch = dotPitch - lastPitch;