diff --git a/Source/Engine/Physics/Actors/WheeledVehicle.cpp b/Source/Engine/Physics/Actors/WheeledVehicle.cpp index 2c21e8880..971f882cd 100644 --- a/Source/Engine/Physics/Actors/WheeledVehicle.cpp +++ b/Source/Engine/Physics/Actors/WheeledVehicle.cpp @@ -324,13 +324,12 @@ void WheeledVehicle::Setup() wheelData.mMaxHandBrakeTorque = M2ToCm2(wheel.MaxHandBrakeTorque); PxVec3 centreOffset = centerOfMassOffset.transformInv(offsets[i]); - float suspensionForceOffset = 0.0f; - PxVec3 forceAppPointOffset(centreOffset.x, centreOffset.y, centreOffset.z + suspensionForceOffset); + PxVec3 forceAppPointOffset(centreOffset.z, centreOffset.y + wheel.SuspensionForceOffset, centreOffset.z); wheelsSimData->setTireData(i, tire); wheelsSimData->setWheelData(i, wheelData); wheelsSimData->setSuspensionData(i, suspensionData); - wheelsSimData->setSuspTravelDirection(i, PxVec3(0, -1, 0)); + wheelsSimData->setSuspTravelDirection(i, centerOfMassOffset.rotate(PxVec3(0.0f, -1.0f, 0.0f))); wheelsSimData->setWheelCentreOffset(i, centreOffset); wheelsSimData->setSuspForceAppPointOffset(i, forceAppPointOffset); wheelsSimData->setTireForceAppPointOffset(i, forceAppPointOffset); diff --git a/Source/Engine/Physics/Actors/WheeledVehicle.h b/Source/Engine/Physics/Actors/WheeledVehicle.h index 12b5c864c..bbccfd76b 100644 --- a/Source/Engine/Physics/Actors/WheeledVehicle.h +++ b/Source/Engine/Physics/Actors/WheeledVehicle.h @@ -228,6 +228,11 @@ public: /// The maximum offset for the suspension that wheel can go below resting location. /// API_FIELD(Attributes="Limit(0)") float SuspensionMaxDrop = 10.0f; + + /// + /// The vertical offset from where suspension forces are applied. + /// + API_FIELD() float SuspensionForceOffset = 0.0f; }; ///