Quick answer: Step Offset 0.3, Skin Width 0.04, Slope Limit 50. Capsule radius matched to step landing width. Step Offset must be less than capsule radius for the snap-up to work.
Player walks forward, hits a 10 cm curb, stops dead. CharacterController has a Step Offset, but it’s set too low or Skin Width is masking it.
The Symptom
Movement stalls at small height changes. Or the controller jitters as it tries and fails to snap up.
The Fix
CharacterController:
Slope Limit: 50 // up from 45
Step Offset: 0.3 // 30 cm step
Skin Width: 0.04 // thin: don't bury offset
Min Move Distance: 0 // don't skip tiny moves
Center: (0, 0.9, 0)
Radius: 0.4
Height: 1.8
// Constraint: Step Offset < Radius
// 0.3 < 0.4 ✓
That trio (offset / skin / slope) handles 95% of step-snag cases. The radius constraint is enforced by Unity at runtime; violating it silently disables stepping.
Geometry-Side Fix
If your level has many tiny seams between meshes, weld them or place an invisible smooth-walk collision over the joint. CharacterController treats every collider edge as a potential step.
Verifying
Walk into a 30 cm step: snaps up smoothly. Walk into a 50 cm wall: stops. Curbs and stair landings stop snagging.
“Offset under radius. Skin thin. Slope generous. Snags clear.”
Related Issues
For Rigidbody2D mass tipping, see mass tipping. For Cinemachine impulse, see impulse.
Step offset under radius. Snag gone.