Crazy physics problem

Hi all!

So I just started developing seriously in Unity and I’m making a polo game as a starter project. Everything is going well so far, noticing that Unity handles a LOT of stuff I’d otherwise have to hard-code in ‘classic’ development.

Now though I’ve encountered a bizarre problem. The ball (which is always hit low to the floor) will travel in a realistic and believable manner, coming to a stop in a decent time when it’s on flat ground. HOWEVER, when the ball encounters even the slightest hill, it’s as though it’s momentum is drained completely. I would have thought that a fast travelling ball rolling up a hill would slow down eventually, and then transfer that speed back down the hill. In my game however, it slows down then VERY sluggishly and very slowly rolls back down.

It seems very strange, surely the energy used in rolling up the hill would be transferred (almost) completely into rolling back down again. Instead it just…gives up and rolls back down so slowly.

At this point any suggestions would help, let me know if I can clarify anything :smile:

Thanks!!
Senor

Could it be that the mass is too high? Just a guess since I’m super new to unity

As surfaces in 3D Graphics consist of flat planes (polygons), they can be perfectly flat, but never perfectly round.
Physics of a Ball rolling over a surface are calculated using the polygon’s normals (more precisely: the mesh collider’s polygon normals), and because a surface is never perfectly round, the normals are uneven, too.
Hence, a ball rolling over a non-flat surface, considering the poly-normals, doesn’t run smoothly.

Luckily, Unity provides a build in feature to solve this problem. It’s called “Smooth Sphere Collisions”, which interpolates the normals. It’s a checkbox that can be activated in your mesh collider.

Try that, hope it works!