Quick answer: Set Immovable = Yes in the Physics behavior properties (or via the Set Immovable action at start). Don’t drive its position with Set Position — that fights the solver.

A platform with the Physics behavior should be a solid, unmovable wall. When a heavy crate hits it, it drifts slightly — it’s still a dynamic body.

Set Immovable Properly

Select the object → Physics behavior properties → Immovable = Yes. An immovable body has effectively infinite mass — collisions don’t move it, but it still blocks other bodies.

If you need to flip it at runtime, use the Set Immovable action — ideally once at start of layout.

Don't Use Set Position on Physics Bodies

Driving a physics object with the System “Set position” action teleports it outside the solver’s knowledge. The next physics step sees the jump and can impart velocity. For moving platforms, use Apply force / Set velocity, or make it immovable and move it via the Physics “Set position” under the behavior (not the System one).

Moving Immovable Platforms

For a moving-but-unpushable platform, immovable + the Physics behavior’s own movement actions (or a Sine/Tween on a non-physics mover that the platform follows) keeps it authoritative — crates ride it, nothing pushes it.

World Scale Reminder

Box2D is happiest with objects roughly 0.1–10m. Tiny or huge objects destabilize — an “immovable” object that’s 2px wide can still behave oddly. Keep physics objects reasonably sized.

Verifying

Slam crates into the platform. It doesn’t budge. Crates stack and rest on it correctly. Moving platforms carry crates without being shoved.

“Immovable = infinite mass. Set it in the editor, and never fight the solver with System Set Position.”

For purely-kinematic platforms, consider skipping the Physics behavior entirely — Solid + a mover is simpler and never destabilizes.