Realistic bounce in a billiard game

I’m having big problems in finding a good setup for a billiard game to make ball bouncing realistic and acurate using Unity Physics. I would like to have perfect bounces when the ball collides cushions.

Both cushions and ball physic materials has friction to zero and bounceness to 1. The ball have “friction combine” to “Average”. Eventhough both has no friction it seems that somehow the ball angle is affected by the friction with the rig when bouncing.
If I set ball “friction combine” to “Minimum” I get the dreamed perfect bound, but I then loss the friction with the rig, so the balls doesn’t rotate anymore…

Anyone has any idea to avoid this problem? Thanks in advance

I was struggling with the same issue when I have started working on a Pool game. Tried every possible combination of bounciness, friction, mass, drag but nothing had solved this issue. It was so frustrating that I had nearly dropped the idea of this. But then I found some pointers on other forums and that led to solve this issue.


So basically it was a setting for Physics2D. Go to Player Settings >> Physics2D. Look for Velocity Threshold (Bounce Threshold in 3D) property. By default it is 1. That means if your ball’s velocity drops below this value then Unity Physics engine will consider both surfaces as non-elastic or no bounciness. When your balls keep colliding to edges or other balls, it gradually looses its energy and velocity. As soon as the velocity drops below 1, it looses its bounciness and just keep rolling along the surface. Reducing this threshold will fix the issue. But be careful, reducing it too low may introduces some jitters. So try experimenting with different values and find which suits you most.


In my case I have set Velocity Threshold to .2. My balls has physics materials with values - Friction = 0, and Bounciness = .7. The Rigidbody collider has mass = 1 and Linear Drag = .5. These values achieved me near to real pool balls colliding scenario.
Thanks.