Skip to content

Fix sub-pixel jitter after tile separation#7253

Open
danitpeck wants to merge 1 commit intophaserjs:masterfrom
danitpeck:fix/arcade-tile-separation-subpixel
Open

Fix sub-pixel jitter after tile separation#7253
danitpeck wants to merge 1 commit intophaserjs:masterfrom
danitpeck:fix/arcade-tile-separation-subpixel

Conversation

@danitpeck
Copy link

@danitpeck danitpeck commented Feb 26, 2026

Please do not update the README or Change Log, we will do this when we merge your PR.

This PR (delete as applicable)

  • Fixes a bug

Describe the changes below:

Fixes #7252

ProcessTileSeparationX/Y can leave body.position at fractional values after subtracting the overlap, like 63.9997 instead of 64.

Tiles are at whole pixel coords so this shouldn't happen, but float math is gonna float math. In pixelArt games it shows up as sprites jittering 1px back and forth while just standing on a tile.

The fix: after the subtraction, if the result is within 0.01 of a whole number, snap it. Catches the float drift without messing up bodies that are supposed to be fractional (scaled sprites with non-integer dimensions, etc).


Note

Low Risk
Small, localized change to tile collision resolution; main risk is edge-case behavior changes for bodies that rely on tiny fractional positions near pixel boundaries.

Overview
Fixes sub-pixel jitter after Arcade Physics tile separation by snapping body.position.x/y to the nearest integer when the post-separation value is very close to a whole pixel.

The new rounding is tolerance-based (< 0.01) so intentionally fractional positions (e.g., from scaled sprites / non-integer body sizes) are preserved, and the rest of the separation/bounce logic remains unchanged.

Written by Cursor Bugbot for commit d01636b. This will update automatically on new commits. Configure here.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Free Tier Details

Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable autofix in the Cursor dashboard.

@danitpeck danitpeck force-pushed the fix/arcade-tile-separation-subpixel branch from 1773d0c to d01636b Compare February 26, 2026 04:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Arcade Physics: tilemap tile separation leaves body.position at sub-pixel values, causing 1px visual oscillation

1 participant