Your map node can sit anywhere in the world — but it must stay unrotated and unscaled. That one rule keeps preview, collision, occupancy, manipulation, and restore agreeing with each other.
What you can do
Move the map (TileMapLayer in 2D, GridMap in 3D) wherever your level needs it: world offsets, negative coordinates, and custom cell sizes all work. The same goes for its parent nodes — panning a whole level container is fine.
| Map | Move (position) | Rotate | Scale |
|---|---|---|---|
2D TileMapLayer |
Yes | No | No |
3D GridMap, including yaw |
Yes | No | No |
| SMOOTH (no map involved) | Not applicable — world coordinates | Rotate placed objects normally | Scale placed objects normally |
Note the distinction the table is drawing: rotating or scaling the map node is unsupported, while rotating a placed object (preview rotation, 3D yaw) is a normal, supported part of placement.
What happens if the map is rotated or scaled
Placement refuses through the normal failure report, naming the offending node. The fix is on your side of the scene tree, not in plugin settings:
- Select the map node in the editor.
- Reset its
rotationto zero and itsscaleto one. - Walk up its parents and do the same — a rotated level container counts too.
- Run placement again.
Do not work around this by bypassing the host: the preview can look right while collision or restore still reads the map's axes differently, which surfaces much later as misplaced objects or broken saves.
Why the rule exists
Every subsystem has to interpret the map's axes identically. The current placement pipeline rejects rotated or scaled maps up front instead of failing halfway through a commit. Keep map nodes and their parents unrotated and unscaled.
Related guides
Using this in a game?
Grid Placement v6.3.0 — full source, playable demos, commercial license
The guide above is the same setup the shipped demos use. Try the build in your browser before you buy it.