Rolling cyliner, not acting as required

I’ve been coding a rolling boulder for a game Im working on, its a rigidbody, and it simply doesn’t roll all that well.

When rolling, the floor seems to make it reverse on its self, causing it to loose control. I’m moving it with Transform.Translate, with Gravity on (as i need it to roll down a hill)

roller.transform.Translate(Vector3.up * Time.deltaTime*4);

Any ideas, or things I could be doing wrong are welcomed

Edit, I relaise this could be to do with object orienation, will play with soem settings

You shouldn’t move physics simulated objects with transform. It’ll mess calculations up. use rigidbody.AddForce or rigidbody.AddTorque.

You should alway control a rigidbody through it’s components and variables. A Transform is not a physic object and as such does not abide to the law of physics and just ignore them.

Your code should be something like

roller.rigodbody.velocity = (transform.forward * (Time.deltaTime*4));