Gravity on objects with large drag is extremely unrealistic

I've been working on a plane simulator, and for realistic horizontal movement, I've set the drag value to 1. This gives me the motion I want on the horizontal, but makes gravity extremely unrealistic.

If you turn off the throttle and let it freefall, the plane will accelerate for maybe a second, and hit a terminal velocity of only 30m/s. It just moves at a constant through the air, looking rather stupid and unbelievable as it does.

Is there any way to change drag on an individual component basis? Or is this the limit of Unity's physics engine?


That's how Unity/PhysX works.

In your case, you shouldn't use the rigidbody drag (leave it at 0). Just calculate and apply the drag force yourself, so you could implement drag in the precise way you need.

1 Like

PhysX’s built-in drag force does not take into account the shape of objects, only their velocity, since it is not designed with aerodynamics in mind.

For any plane simulation no matter how simple you want to calculate aerodynamic drag/lift forces yourself. A basic airfoil model that takes wing area and orientation into account is a good starting point: https://www.engineeringtoolbox.com/amp/lift-drag-fluid-flow-d_1657.html

Note that any custom forces you calculate can be applied to any object on an individual basis using Rigidbody.AddForce.

As everyone else said, the drag property is a scalar which applies linear drag to all components of the physics body. If you want more accurate simulations given drag is a tensor, you'd need to implement it manually using AddForce().