My tank will flips on the air when it collide other objects.

sorry, I’m not a native speaker of English。I can not speak English well 。So my description might not be clear。

I am developing a Tank game.

But the Tank like a bouncy ball, it will rollover when collide the terrain and other objects. Even when a tank move to another tank,it can ride to the top of this tank.
like this:

I had set the mass almost 3000, and the center of the mass lower, but it don’t take effect. I am using a box collider.

I had also try to set Freeze Rotation x and z, but the tank will move slowly out of control。

I’m thinking creat a script, to check the tank’s Rotation in update(), when it’s euler angle.x and y beyond a certain limit, reset it to right angle。
but I dont konw how to do it ,and the terrain has slope, when the tank climbing, it’s rotation will beyond the limit。

I have tried my best to let you understand my difficulty, I hope you can help me, thank you very much!

Are you using transform.Translate to move the tank? If so, this might be the problem. The Translate function would cause the colliders to overlap, which could cause the behavior that you are describing.

Instead of Translate, try using rigidbody.AddForce, or possibly CharacterController.Move.