Physics discrepency

So i have a rigidbodied cube as the player. Its a platform game where the square is to be moving to the right at the velocity of Vector3(15f, 0f, 0f);. While the cube moves at the correct speed it is rolling over itself and i cant understand why.

I have created a physics material with 0 friction to the ground im using. Cube still rolls

I have used freeze roation on the rigidbody to get this far, but thats no longer viable as i need the cube to “tumble” if it had cause too and will inherit rotation in other ways

I need the cube to be able to roll if its rotating already but settle into a flat upright position short after. How might i achieve this?

Using a PhysicsMaterial should actually do the trick. Though you haven’t said what you friction combine value is set to on both materials. Note that each material has a frictionCombine value but only one will be used. There’s a strict hierarchy which combine mode will be used which can be read about here. Average (which is the default) will just take the average of the two provided friction values. Average has the lowest priority. If one is set to Minimum and one to Average, it will use the minimum value. Though if either one is set to Maximum, Unity / PhysX will always use the greatest value of the two.

Apart from friction, are you use there are not “collider edges” where the cube can bump into? It’s also not clear how the object is actually moved and if the cube collider is the only collider of that rigidbody. Note that any child object with a collider will also be used as collider (compound collider).