Quick answer: Godot 4 Light2D shadow appearing one frame delayed after the occluder moves? Light updates per physics tick; occluder per process - sync via signal or use ProcessMode Always.
Wall moves; shadow follows one frame later. Visible at slow movement.
Sync occluder updates
Connect Process to LightUpdate; emit signal; light re-renders.
Or process per frame
ProcessMode = ProcessMode.ALWAYS on light; renders every frame.
Verify timing
Pause-frame inspection: occluder position vs shadow position. One-frame gap = the bug.
“Lights and occluders may have different update cadences. Sync them.”
For dynamic 2D shadows, the sync pattern is mandatory. Plan it.