Quick answer: Godot TileMap collision shapes drawing offset from the tile? The shape coordinates are relative to the tile center, not the top-left — redraw centered.
TileMap physics shapes hover outside the visible tile, leaving a gap between sprite and collider. The shape was drawn from (0,0) of the tile rectangle, not from the center.
Tile-Centered Coordinates
In the TileSet editor, physics shape vertices are in tile-local space with the origin at the tile’s center. A 16×16 tile’s top-left corner is (−8, −8), bottom-right (8, 8).
Fix the Polygon
Reset the polygon and redraw it from corners derived in centered coords: (−w/2, −h/2) to (w/2, h/2). The shape now overlays the sprite exactly.
Per-Frame Animated Tiles
Animated tiles can hold different shapes per frame. Make sure the offsets are consistent or moving characters will jitter as the tile cycles.
Verifying
Drop a body onto the tile — it lands flush with the sprite top, no gap or overlap.
“TileMap shapes are tile-centered. Draw them from negative half-extents.”
If you find yourself fighting offsets repeatedly, write a small editor tool that regenerates collision polygons from each tile’s texture alpha.