unity-2d-tilemap
Unity 2D Tilemap — Grid + Tilemap, Rule Tiles, Animated Tiles, Tile Palette, Hexagonal/Isometric grids, Composite Collider 2D + Tilemap Collider 2D, procedural tilemap generation. USE WHEN: building level geometry from tiles, painting auto-tiling terrain, isometric/hex maps, optimising tilemap colliders, runtime tilemap generation. DO NOT USE FOR: free-form sprites (use `unity-2d-core`); platforming movement (use `unity-2d-gameplay`); 2D physics general topics (use `unity-2d-physics`).
What this skill does
# Unity 2D Tilemap
## Grid + Tilemap hierarchy
```
Grid (component on parent)
└── Tilemap_Background Tilemap + TilemapRenderer
└── Tilemap_Ground Tilemap + TilemapRenderer + TilemapCollider2D + Rigidbody2D(Static) + CompositeCollider2D
└── Tilemap_Decorations Tilemap + TilemapRenderer
```
One Grid → multiple child Tilemaps. Sorting per Tilemap via Sorting Layer + Order in Layer.
## Tile types
| Tile | Use |
|---|---|
| **Tile** | Single sprite per cell |
| **Animated Tile** | Sprite cycles through frames at set speed (rivers, torches) |
| **Rule Tile** | Auto-picks sprite based on neighbor cells — borders, corners, isolated rocks |
| **Random Tile** | Picks one sprite at random from a list (variation in flat ground) |
`com.unity.2d.tilemap.extras` package adds Rule/Animated/Random/Hexagonal Rule tiles.
### Rule Tile — auto-tiling pattern
```
For ground tiles:
Top neighbor empty + sides full → top edge sprite
All neighbors full → solid interior sprite
Top + right empty → top-right corner sprite
... etc
```
Define the matrix in the Rule Tile inspector — a 3×3 grid of `Filled / Empty / Don't Care` per rule.
## Tile Palette
`Window > 2D > Tile Palette`. Drag sprites in → it generates Tiles automatically. Use brushes (Default, Random, Animated, Custom) to paint efficiently.
## Composite Collider for performance
Per-cell colliders = many small physics objects. Composite collapses them into one polygon:
```
Tilemap_Ground (GameObject)
├── TilemapCollider2D Used By Composite = ON
├── Rigidbody2D Body Type = Static
└── CompositeCollider2D Geometry Type = Polygons (or Outlines)
```
Result: one collider for the entire tilemap → physics queries cheap, broadphase fast.
## Hexagonal & Isometric grids
`Grid > Cell Layout`:
| Layout | When |
|---|---|
| Rectangle | Standard top-down / side-scroller |
| Hexagon (Pointy-Top) | TBS / 4X games |
| Hexagon (Flat-Top) | Stylistic preference |
| Isometric | "Diablo-like" 2.5D |
| Isometric Z as Y | Faking depth in iso (objects further north appear behind) |
For iso, add **Anti-Aliasing** to the camera and use **Sorting Group** carefully on multi-cell sprites (trees, towers).
## Procedural tilemap generation
```csharp
public class CaveGenerator : MonoBehaviour {
[SerializeField] private Tilemap tilemap;
[SerializeField] private TileBase wallTile;
[SerializeField] private TileBase floorTile;
[SerializeField] private int width = 64;
[SerializeField] private int height = 64;
[SerializeField] private float fillPct = 0.45f;
public void Generate(int seed) {
var rng = new System.Random(seed);
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++) {
bool wall = rng.NextDouble() < fillPct;
tilemap.SetTile(new Vector3Int(x, y, 0), wall ? wallTile : floorTile);
}
// (typical next step: cellular automata smoothing)
}
}
```
Use `tilemap.SetTilesBlock` for batch writes — much faster than per-cell `SetTile` for big maps.
## Anti-patterns
| Anti-pattern | Fix |
|---|---|
| Per-cell colliders without Composite | TilemapCollider2D `Used By Composite = ON` + CompositeCollider2D + static Rigidbody2D |
| Painting collisions onto deco tilemap | Separate visual tilemap from collision tilemap |
| One huge tilemap for a sprawling world | Chunked tilemaps streamed by Addressables / scene loading |
| `SetTile` per cell in a loop for procgen | `SetTilesBlock` with prepared arrays |
| Mixing iso + rectangle on same Grid | One Grid type per scene |
## Production checklist
- [ ] Tilemaps split by purpose (background / ground / decorations / collision)
- [ ] Collision tilemap uses Composite Collider 2D
- [ ] Rule Tiles for auto-tiling terrain — no per-tile painting of edges
- [ ] Tile Palette saved as asset, version-controlled
- [ ] Big maps chunked / streamed
- [ ] Sorting strategy consistent across tilemaps
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.