Particles2D: How to slow down angular velocity? (Angular damping?)

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By vib

I’m making a particle effect with Particles2D where I want the particles start spinning really fast in random directions and speed, and then slow down over time until they stop. Emulating debris from an explosion seen from the top. The linear velocity part of the system was trivial, I just set a random initial linear velocity with some damping and the particles starts moving fast, then stop over time. But I’m having a hard time doing that for the angular velocity. I set the initial angular velocity with randomness, but I can’t find any sort of angular damping to slow them down.

Workarounds I have tried:

  • Set Angular velocity and randomness to zero. Use Angular velocity curve to make the particles accelerate in the beginning of the curve then slow down.

  • Ignore all Angular velocity parameters. Animate the spin with Angle Curve instead. This allows exact control over the angle each particle will have during its lifetime, making it easy to start spinning then stop.

Both methods have similar results, but the same problem. They allow me to make the particles start spinning and stop over time. But they force all particles to always spin in the exact same direction and speed. So they look unnatural. If I try to add some random angular velocity, then the faster spinning particles never stop spinning. If I try to compensate for the faster spinning particles by making the curve reverse the spin faster… then the slower particles will start spinning backwards after stopping.

What I would like is something similar to the damping parameter, but for angular velocity. Other engines/particle systems I’ve used usually have some sort of “angular damping” but I can’t find anything like that on Godot? Am I missing something or is there no such thing in Godot? If not, is there any better workaround I’m missing that would allow me to have a random initial velocity?

(Using Godot 3.5)