Quick answer: PhysX character controller stepping over barriers you wanted to block? StepOffset is too high — lower it, or use a separate “cannot pass” collision channel for blockers.

A character with PxControllerCCT walks over chest-high cover that should block movement. StepOffset is 0.5m but cover is 0.3m tall.

Tune StepOffset

The controller automatically steps onto surfaces below StepOffset height. Set it to your tallest acceptable step (curb ≈ 0.2m, stair ≈ 0.3m) — not your character’s waist height.

Cover Tagging

For tactical games, mark cover meshes with a flag and skip the controller’s step logic against them — uses the OverlapRecoveryModule callback to reject step-up.

Ground Detection

StepOffset interacts with SlopeLimit. A slope steeper than the limit but shorter than StepOffset still gets stepped over — verify both values are coherent for your design.

Skin Width

The controller’s skin width is the “contact buffer”. Small geometry differences (1cm) below skin width get ignored, which can look like “walking over” small obstacles.

Verifying

The character mounts stairs and curbs smoothly but is blocked by anything above the configured step. Cover blocks as intended.

“Step offset is a height threshold. Set it to the tallest acceptable step.”

Visualize the step / slope thresholds with debug geometry in dev builds — designers can see at a glance where their cover is going to fail.