Quick answer: Tilemap.Set Tile already updates collision — if it still feels wrong, audit per-tile collision polygons in the tileset editor and check event order so Set Tile runs before movement resolution.

You destroy a destructible tile in mid-air. The player should fall through the now-empty space — instead, they stand on what looks like nothing. The visual updates instantly but the collision behaves as if the tile is still there.

How Tilemap Collision Updates

Construct 3’s Tilemap plugin maintains an internal collision mesh derived from each tile’s collision polygon. When you call the Set Tile action, the engine:

  1. Updates the tile id at the target cell.
  2. Invalidates the collision shape for that cell.
  3. Recomputes the shape from the new tile’s polygon on next collision query.

Set Tile is intentionally cheap; the recomputation is lazy. By the next physics step, the new layout should be authoritative.

If Collision Still Looks Wrong

Cause 1: Event order

If your event sheet does:

1. Every tick: Player Platform Behavior simulates control
2. On condition X: Tilemap Set Tile (cell, -1)

The platform behavior already resolved collisions for this frame using the old tile layout. The Set Tile happens, but the player’s position for this frame is already determined. Next frame, collision is correct, but for one tick the player stands on an empty cell.

Move the Set Tile action above the movement-resolving events — or trigger it from input handling before behavior updates.

Cause 2: Per-tile collision polygon

Open the tilemap’s tileset. For each tile, the Inspector shows a Collision Polygon. If a tile shows the default rectangle but should be empty, the tile is solid even though the art is just a decoration. Click the tile and:

Cause 3: Behavior caching

The Platform behavior caches the platform it’s standing on between frames for stability. After destroying the tile under the player, the behavior may need one frame to notice. This is by design and usually invisible; if it bothers you, manually call Player.Platform.SetVectorY(1) after destroying the tile to nudge it off the cached platform.

Verifying

Open Project Properties → Show debug info and run the layout. The debug overlay draws collision polygons on tilemap cells. Watch the polygons disappear as you Set Tile to -1 (empty). If a polygon stays visible after the tile is gone, the action isn’t reaching the tilemap (wrong instance reference, or the call was conditional and didn’t fire).

For Procedural Tilemaps

When generating tilemap data at runtime (e.g., from a noise function):

// Pseudo-code in event flow
For each X, Y in level bounds
    Tilemap Set tile (X, Y) to tile_for_height(X, Y)

Each Set Tile invalidates that cell’s collision. For very large tilemaps generated in a single tick, you can hit a perceptible frame hitch — spread the generation across multiple ticks using a counter and yielding back to the engine.

“Set Tile updates collision. The bug is almost always in event order or per-tile polygon definitions.”

Enable “Show debug info” while developing — you can see collision polygons live, which makes most tilemap bugs obvious.