Quick answer: Tilemap collisions require two things: the Solid behavior on the Tilemap object, and collision polygons defined for each individual tile in the tileset image editor. If either is missing, the player will walk straight through tiles. Also verify that tiles are actually placed (not just visually similar), the correct behavior matches your movement system, and layer ordering is correct.
Here is how to fix Construct 3 tilemap collisions that are not working. You painted a level using the Tilemap object, placed your player character, and pressed play — the player walks or falls straight through the tiles as if they are not there. The tiles are visible, the player moves, but there is zero collision between them. This is a setup issue that trips up nearly every developer the first time they use tilemaps in Construct 3.
The Symptom
Your layout has a Tilemap object with tiles painted to form floors, walls, and platforms. The player character has the Platform behavior (or 8-Direction, or custom movement). When you run the project, the player falls through the floor tiles or walks through wall tiles without stopping.
In some cases, collision works on some tiles but not others. Or the player collides with the tilemap in most places but clips through at specific spots, especially corners or slopes. You might also see the player get stuck inside a tile rather than sliding along the surface.
What Causes This
There are five common causes:
1. Tilemap does not have the Solid behavior. This is by far the most common cause. A Tilemap object by itself is purely visual — it draws tiles but has no collision properties. You must explicitly add the Solid behavior (or Jump-thru for one-way platforms) for it to block movement. This is different from some other engines where tilemaps inherently have collision.
2. Tiles have no collision polygons. Even with Solid on the Tilemap, individual tiles need collision polygons defined in the tileset image editor. Each tile in the tileset can have its own polygon, or no polygon. Tiles without a polygon are treated as empty space for collision purposes, even if they have visible artwork. A tile that looks solid but has no collision polygon will let the player pass through.
3. Wrong behavior type for the movement system. If your player uses the Physics behavior, the Solid behavior on the tilemap will not stop it. Physics objects only collide with other Physics objects. You would need to add the Physics behavior to the tilemap with Immovable set to Yes. Conversely, if your player uses Platform behavior, Solid is the correct choice.
4. Tiles not actually placed. It is possible to have a tilemap that appears to have tiles in the editor but the tiles were placed on a different tilemap instance or were erased accidentally. If you have multiple tilemap objects (e.g., one for background decoration, one for collision), make sure the Solid behavior is on the one that actually has collidable tiles painted on it.
5. Collision polygon gaps at tile edges. If you manually edit collision polygons on tiles, slight gaps between adjacent tile polygons can create tiny spaces the player can slip through. This is especially common with slope tiles where the polygon does not reach the exact edge of the tile cell.
The Fix
Step 1: Add the Solid behavior to the Tilemap.
// Select the Tilemap object in the layout or project bar
Properties panel → Behaviors → + Add → Solid
// For one-way platforms (player can jump up through):
Properties panel → Behaviors → + Add → Jump-thru
// For physics-based games:
Properties panel → Behaviors → + Add → Physics
Physics → Immovable: Yes
Step 2: Define collision polygons for each collidable tile.
// Open the tileset collision editor:
1. Double-click the Tilemap to open the tilemap bar
2. Click the pencil/edit icon to open the image editor
3. Select a tile you want to be solid
4. Click the collision polygon tool (polygon icon in toolbar)
5. Draw the collision shape or right-click → "Set to bounding box"
6. Repeat for every tile that should block the player
// Quick method for rectangular tiles:
// Select tile → Collision polygon tool →
// Right-click → "Set to bounding box"
// This fills the entire tile cell with a collision rectangle
For slope tiles, carefully position the polygon points to match the slope angle. Make sure the polygon extends to the exact edges of the tile cell so it connects seamlessly with adjacent tiles.
Step 3: Verify which tilemap has the Solid behavior.
// If you have multiple tilemap objects, check each one:
// TilemapBackground - decorative tiles, no collision needed
Behaviors: (none)
// TilemapCollision - the actual level geometry
Behaviors: Solid
// Debug: Highlight collidable tiles at runtime
Event
Condition: System → On start of layout
Action: TilemapCollision → Set visible to True
Action: TilemapBackground → Set visible to False
// Now you can see exactly which tiles have collision
Step 4: Fix collision polygon gaps on slopes and edges.
// For slope tiles, ensure polygons reach tile boundaries:
// WRONG: Slope polygon stops short of tile edge
// +--------+
// | / | ← gap at bottom-left corner
// | / |
// | / |
// +--------+
// CORRECT: Polygon reaches both edges
// +--------+
// | /|
// | / |
// | / |
// | / |
// +--------+
// Bottom-left point at (0, tileHeight)
// Bottom-right point at (tileWidth, tileHeight)
// Top-right point at (tileWidth, 0)
Step 5: Test collision with the debug overlay.
// Use the built-in debugger to verify collision:
1. Press F4 or click Debug layout in the toolbar
2. In the debugger panel, find your Tilemap object
3. Check that "Solid" appears in its behaviors list
4. Watch the player's collision status as they move
// Or add a runtime collision check via events:
Event
Condition: System → Every tick
Action: DebugText → Set text to
"Overlapping tilemap: " &
(Player → Is overlapping TilemapCollision)
Why This Works
The Solid behavior registers the Tilemap as a collidable surface in Construct 3’s movement collision system. The Platform, 8-Direction, and other built-in movement behaviors check for Solid objects during their movement calculations. Without Solid, the movement behavior has nothing to push against.
Per-tile collision polygons tell the engine the exact shape of each tile’s solid area. Since a tileset can contain solid walls, empty backgrounds, slopes, and partial tiles, the engine needs to know which parts of each tile are solid. A tile with no polygon is treated as passable — the engine skips it during collision checks entirely.
Matching the behavior to the movement system ensures both objects speak the same collision language. The Platform behavior queries Solid objects. The Physics behavior queries other Physics objects. Mixing them produces no collision because the two systems operate independently.
Eliminating polygon gaps prevents sub-pixel spaces where the player’s collision shape can slip between two adjacent tiles. When tiles share an edge, their collision polygons must also share that edge perfectly — any gap, even one pixel, can allow the player to clip through at just the right angle.
"Two things. Solid behavior on the tilemap. Collision polygons on the tiles. That is the entire fix 90% of the time."
Related Issues
If your tilemap collisions work but your event sheet conditions do not trigger correctly on tile overlap, see event sheet conditions not working. For physics-based games where objects fall through the tilemap, see physics objects falling through floor which covers the Physics behavior + Immovable approach in detail. If your collision works in the editor preview but breaks after a save/load cycle, check save/load not working.
No collision polygon on the tile means no collision. Full stop.