Quick answer: Use uniform scale only, set the collider's size directly instead of transform scale, and recompute or override the inertia tensor after scaling.
When you scale a physics object it starts tunneling, spinning oddly, or sinking into floors. Transform scale (especially non-uniform) warps the collider and inertia tensor. Resizing the collider directly and refreshing inertia restores correct behavior.
How to fix it
1. Resize the collider, not the transform
Change a BoxCollider.size or SphereCollider.radius directly and keep the transform scale at 1, since scaling the transform non-uniformly distorts the physics shape.
2. Keep scale uniform
If you must scale the transform, keep x, y and z equal; non-uniform scale on a rotated collider produces a skewed shape PhysX cannot represent accurately.
3. Refresh the inertia tensor
After changing size or mass, the inertia tensor may be stale; reset it (set Rigidbody.ResetInertiaTensor()) or assign an explicit inertiaTensor so rotation behaves correctly.
Catching the ones you can't reproduce
The hardest version of this to fix is the one you can't reproduce — it only happens on a player's hardware, OS, driver, or save state, under conditions that simply aren't present on your machine. A report that says “it crashed” or “it froze” gives you nothing to act on, so the bug survives release after release while quietly costing you players.
Automatic error capture closes that gap. Each failure arrives with its full stack trace, the device and OS, the build number, and a breadcrumb trail of what the player did right before it broke, so even a failure you have never seen becomes a specific, reproducible issue. Fold identical failures into one signature ranked by how many players each hits, and your worklist sorts itself worst-first instead of arriving as a stream of vague complaints.
This is where a tool like Bugnet earns its place. Its SDK captures every Unity error automatically with the full stack trace plus device, OS, memory, build, and game-state context, folds duplicates into one grouped issue with an occurrence count, and ties each to the build it first appeared on — so you fix the problem that hurts the most players first and confirm it is gone when its signature disappears from the next release.
Ship the fix, watch the signature disappear from the next build. That's how you know it's really gone.