Setup Guide — Secret / Illusory Wall¶
An illusory wall looks exactly like a solid wall but the player can walk through it. The wall can either dissolve visually when approached or remain invisible — showing no animation at all, just silently letting the party pass.
This guide covers two variants:
- Proximity reveal — the wall dissolves when the party steps onto its cell (the most common classic dungeon secret).
- Triggered reveal — a lever, button or other source dissolves the wall on demand.
A third case — a wall that is simply passable with no visual — needs no trigger setup at all and is described at the end.
How it works in the grid¶
Every wall in Dungeon Crawler Framework is registered as an EdgeBlocker in the grid data. For a wall to be physically passable the EdgeBlockerMarker on the wall GameObject must have Is Passable checked. This is separate from whether the wall is visible — visibility is controlled by the animator and mesh activation.
Dungeon Generator
Secret walls are placed from the Secret Wall Library panel in the Dungeon Generator. After placing one, run Generate Unique IDs (all walls) before exporting, so the wall gets a unique targetId the trigger system can reference.
Prefab hierarchy¶
SecretWall ← root
├── WallMesh ← wall geometry + Animator
└── (optional) Collider ← physical collider, disabled when wall is passable
Both components that control the wall — WallCore and TriggerIllusoryWall — go on the root. Only one should be used at a time; choose based on which variant you need.
Variant A — Proximity reveal (WallCore + ProximityRevealBehaviour)¶
Use this when the wall should dissolve the moment the party steps onto the cell where the wall sits. No clicking required — they just walk through and the wall fades out behind them.
Step 1 — Add components to the root¶
Add these components to the SecretWall root:
EdgeBlockerMarker — registers the wall with the grid.
| Field | Value |
|---|---|
| Blocker Id | Unique ID, e.g. wall_secret_01 (or let the Dungeon Generator assign it) |
| Is Passable | ✅ Enabled — the party can always walk through, even before the reveal |
| Is Open | Leave disabled |
WallCore — the central wall controller. Runs the reveal/restore pipeline and drives the mesh and collider.
| Field | Value |
|---|---|
| Wall Mesh | Drag the WallMesh child |
| Wall Collider | Drag the collider on the root (if you have one) |
| Collides When Hidden | Leave disabled — illusory walls should never block physical movement |
| Reveal Duration | Match to the length of your dissolve animation, e.g. 0.5 |
| Restore Duration | Match to the restore animation, e.g. 0.5 |
| Starts Revealed | Leave disabled — wall starts hidden (solid-looking) |
ProximityRevealBehaviour — listens to the grid's OnCellEntered event. When the party steps onto this wall's cell, it calls WallCore.Reveal().
| Field | Value |
|---|---|
| Permanent | ✅ Enabled for a one-way secret (revealed forever). Disable if you want the wall to restore when the party steps back. |
Step 2 — Set up the wall Animator¶
Select WallMesh and open its Animator Controller:
States
Idle_Hidden ← default (wall looks solid)
Revealing ← dissolve animation playing
Idle_Revealed ← wall invisible / fully dissolved
Restoring ← restore animation playing (only needed if Permanent = false)
Triggers
Reveal
Restore
Transitions:
Idle_Hidden → Revealing— triggerReveal, no Exit Time, Transition Duration 0.Revealing → Idle_Revealed— Exit Time on, Transition Duration 0.Idle_Revealed → Restoring— triggerRestore, no Exit Time, Transition Duration 0. (Only if Permanent = false)Restoring → Idle_Hidden— Exit Time on, Transition Duration 0. (Only if Permanent = false)
If your wall has no dissolve animation, you can leave the Animator empty and WallCore will simply show or hide the mesh after Reveal Duration seconds.
No animator needed
If you just want the wall to pop out of existence without any animation, skip the Animator entirely. Set Reveal Duration and Restore Duration to 0 on WallCore — the mesh hides immediately when the party steps through.
Variant B — Triggered reveal (TriggerIllusoryWall + source)¶
Use this when the wall is revealed by an explicit source — a lever in another room, a pressure plate, or a button. The party walks through only after the source has fired.
Step 1 — Add components to the root¶
EdgeBlockerMarker — same as Variant A, with Is Passable checked.
TriggerIllusoryWall — the target component for source-driven reveals.
| Field | Value |
|---|---|
| Blocker Id | Unique ID matching the EdgeBlockerMarker |
| Wall Mesh | Drag the WallMesh child |
| Wall Animator | Drag the Animator from WallMesh |
| Reveal Anim Trigger | Reveal |
| Restore Anim Trigger | Restore |
| Dissolve Delay | Seconds after the reveal trigger fires before the mesh is hidden completely. Match to the end of your dissolve animation. |
Step 2 — Set up the Animator¶
Same states and transitions as Variant A.
Step 3 — Wire the source¶
On your lever, button or pressure plate, drag the TriggerIllusoryWall component from the wall root into the source's Targets list. When the source activates, the wall dissolves. When the source deactivates (lever pulled back, party steps off the plate), the wall restores — unless you want it to stay revealed permanently, in which case use a WallButton or PressurePlate with Latching enabled, or a lever that only ever fires once.
Variant C — Passable wall with no visual (fake solid)¶
The simplest case: the wall appears solid in the viewport but the player can just walk through with no animation, no dissolve, no trigger. Use this for hidden passages the player is simply meant to discover by bumping into walls.
Add only EdgeBlockerMarker to the root and check Is Passable. No WallCore, no TriggerIllusoryWall, no Animator. The grid will let the party through; the wall mesh stays visible forever.
Map behaviour¶
Secret cells — floor tiles marked as Secret in the Dungeon Generator — never appear on the dungeon map until the party physically walks onto them. Illusory walls themselves do not affect the map; what matters is the floor cell type on the other side.
If the room behind the secret wall uses regular floor tiles, it appears on the map as soon as the party enters. If those floor tiles are marked Secret, the room stays hidden on the map until explored.
Summary of components¶
| Variant | Root components |
|---|---|
| Proximity reveal | EdgeBlockerMarker (Is Passable ✅), WallCore, ProximityRevealBehaviour |
| Triggered reveal | EdgeBlockerMarker (Is Passable ✅), TriggerIllusoryWall |
| Fake solid (no visual) | EdgeBlockerMarker (Is Passable ✅) |
Dungeon Crawler Framework — Mantis3de