#Seeking Advice on Implementing Realistic Physics in Godot (Drag, Bounciness, etc.)

1 messages · Page 1 of 1 (latest)

austere sleet
#

Hey everyone! I’m working on a project where I want to improve the realism of physics, particularly with rigid bodies. I'm focusing on implementing drag (air resistance), bounciness, and other key physical properties to make object movement feel more natural.

I know that Godot’s built-in physics system has some parameters like bounce and friction, but I’m wondering:

  • What’s the best approach to implement drag/air resistance in Godot? Should I modify linear velocity manually or use forces?
  • How can I get more accurate bounciness beyond the default bounce property?
  • Are there any other important properties I should consider to make the physics more realistic?

I’m open to suggestions, whether it's tweaking existing settings or scripting custom physics behavior. Any insights, tips, or resources would be greatly appreciated.

Also if you guys know any games that have quite realistic physics implementation that I can look up/reference, I would appreciate it as well.

astral ermine
# austere sleet Hey everyone! I’m working on a project where I want to improve the realism of ph...

Rigidbodies have linear_damping, which could pass as air resistance.
It's linear proportional to the velocity though afaik, if you need it to be quadratic that would require custom code.
Or if you need to take into account like the angle of attack for drag producing surfaces even.

In these cases you can use _integrate_forces() to overwrite the state.linear_velocity according to your custom algorithms.

In there you could "correct" the bouncing as well with something like ( pseudocode/didn't look up the function names )

  state.linear_velocity= linear_velocity.bounce(state.get_collision_local_normal) * bounciness```
#

I think for bouncing off of a single surface at a time, without taking rotation + friction into account at all, this could improve the reflection angle and reflection speed accuracy