Hi there, im trying to make a sphere with a rigidbody slows down when rolling over a plane, tryed every combination of static and dynamic friction, directions and didn't got any result, someone can help? Im trying to simulate something like a pool table...
Thanks in advance!
One of my first projects was a game like Marble Madness, and I experienced a lot of this same issue and spent probably 10 hours total making the movement feel perfect.
The ultimate fix for me was to actually go into the rigidbody's properties and change the angular drag to a higher value so its rotation would slow down quicker. After you do that, make sure the friction values are fairly high so that the ball will actually roll (with low friction, the ball ends up sliding instead of rolling, like it's made of ice and creating an entirely different issue). You may also want to very slightly raise the regular drag, but be very careful as this creates a semi-unrealistic effect if you make it too high (for instance, an airborne ball almost stops dead in the air and falls straight down).
Finally, make sure you apply a texture to the ball so you can visually note how it's moving and whether its movement is entirely driven by rolling (which it should be for the most part).
You can try setting a higher angular drag for the rigidbody of your sphere and also set a angular sleep threshold using `Physics.sleepAngularVelocity` so your rigidbody may stop after the angular velocity goes below a limit.
A mathematically perfect sphere on a mathematically perfect plane will have an infinitesimally small point of contact, so friction won't do anything. You can use OnCollisionStay to manually slow it down instead.