Interactable and Triggerable

Systemssystemlevel-designtechnicalproject check
Checked against the project files: The signal and receiver model is current, but the old interactable prefab palette has been replaced by the Blockout toolkit in the project.

High-Level Overview: A system of environmental interactables that look different in each biome but function identically. They gate level progression, drive puzzle elements, and emphasise the relationship between the two main characters. Every interactable is either universal or character-specific, and the character-specific ones are where the interesting co-op moments come from.


Part 1: The Signal Toolkit

The toolkit has exactly one wiring rule, and everything else follows from it.

The rule

Signals turn on. Receivers watch signals and do something about it.

Nothing knows what listens to it. A plate does not open a door; a door watches a plate.

This is what lets one plate feed a door, a lift and a sound without growing a field for each. It is also what lets a designer answer "why did this open?" by selecting the thing that opened, rather than hunting the level for whatever was pointing at it.

[ Signal ]  --watched by-->  [ Receiver ]
 plate                        door
 button                       lift
 pillar                       platform
 windmill                     water level

Who can use it: the character filter

Every signal carries a Character Filter, colour-coded in the scene so the rule a puzzle enforces is readable from across the room without selecting anything:

FilterColourUse
Anyone🟠 AmberUniversal. Either character solves it.
Koopa Only🟢 GreenWeight, water, ground-based force.
Kiko Only🔵 BlueHeight, flight, reach.
This is the co-op design lever

A room of amber plates is a room either player can brute-force alone. A room mixing green and blue is a room that requires both players to act, and requires them to talk about it. The colour split is the relationship between Koopa and Kiko made into level geometry.

Signals: the things that turn on

SignalBehaviourNotes
Pressure PlateOn while an accepted character stands on it.Stays Down makes it permanent for the rest of the level.
Impact ButtonOn when hit with a move: Koopa spinning, rolling or torpedoing into it; Kiko dashing into it.Mount with its blue Z axis pointing out of the wall into the room. Accepted Moves is a separate mask from the character filter: the filter says whose button it is, the mask says what counts as hitting it. An impossible pairing warns in the console at load.
Rising PillarSunk into the ground until Koopa touches it, then rises to full height. Doubles as a signal once fully up.Place it where it should end up; that placement is the raised position. Koopa Only by default, since this is the Turtle's verb.
Tornado WindmillCharged by Kiko driving tornadoes into it. Holds a strength from 0 to full; sends its signal at a chosen threshold.See Analogue signals below.
Windmill ThresholdOn while a windmill holds at least a given strength.Lets one windmill open a gate at 0.4, a bridge at 0.8 and a vault at full.
Signal RingA hoop the player passes through. Direction-sensitive: Either Way, Along The Axis, or Against The Axis.Can optionally gate: physically plug the hole until the ring is satisfied. Rings build their own meshes at runtime, so widening the hole widens the ring, the field and the gate together.
Toggle LeverFlips on and stays on until pulled again. The manual counterpart to a pressure plate: a state the player sets rather than one they have to stand on.Wants a heavy, committed pull animation. A lever should feel like a decision.
Timed LeverOn for a fixed period after being pulled, then off again.The pressure device. It turns a puzzle into a route: the players have a known number of seconds to reach whatever it opened. In co-op, one player pulls and the other runs.

Receivers: the things that react

ReceiverBehaviour
Signal Response, MoveMoves to a second position while active, and back when it stops. The lift, the sliding wall, the drawbridge.
Signal Response, Show Or HideMakes objects vanish or appear. "Two plates remove this wall" and "two plates conjure this bridge" are the same component with one field flipped.
Signal Response, Water LevelDrops a water box's surface to a new height per solved stage. The lowest height among active stages wins, so stages can be solved in any order and skipping one never leaves the water too high.
Moving Platform (A to B)Shuttles between its placed position and one other point, waiting at each end. Runs from level start by default, or waits on a signal.
Windmill Response, Move With StrengthMaps a windmill's charge proportionally onto a platform's position. Charging the windmill IS moving the platform.

How many sources have to be on

Receivers count their sources with a requirement: All (the usual choice for a two-plate puzzle) or Any, plus options to invert or latch.

Riders

Anything that moves carries whoever is standing on top of it, via a rider box you can right-click to fit to the collider. Movers run before the characters each frame so a rider is never left behind for a frame.

Analogue signals: the windmill exception

Almost everything in the toolkit is binary. The Tornado Windmill is the exception: it holds a continuous strength, and it is worth understanding as a distinct design tool.

  • Each tornado that arrives adds a fixed amount of charge.
  • The greybox shows charge as colour (white → green) and as blade speed. When art arrives, the same fields drive it.
  • Three ways to consume it: as an ordinary signal at one threshold, as any number of extra thresholds, or as a proportional position on a platform.
Why proportional matters

A half-charged windmill reads as a half-raised lift. The player can see how far along they are without a UI element, and a draining windmill visibly eases the platform back down.

Standalone elements

These do not use the signal system. They are triggered by being touched, and pairing them with a plate would put two puzzles in one object:

  • Crumbling Platform: shakes as a warning, then drops away. Returns by default so the jump can be retried.
  • Bounce Pad: launches either character. Reference-counted, so overlapping pads are safe.
  • Water: currents with direction and strength, plus an entry splash tuned per character (Koopa lands heavy, Kiko barely breaks the surface).
  • Killzone: respawn volume.
  • Sinking Platforms, Moving Platform (multi-point routes, for when A-to-B isn't enough).

Feedback: sound and effects

Every signal and every receiver carries a feedback slot per moment (turned on / turned off). Hanging a noise and a puff of dust on a puzzle is two drag-and-drops rather than a UnityEvent wired to an AudioSource someone has to remember to place.

Each moment takes either a plain AudioClip or an FMOD event. Both roads exist on purpose: a clip works the instant somebody drags a .wav on, and FMOD is where the mix actually lives, so a level can be greyboxed on clips and migrated to FMOD event by event, without either half waiting for the other.

Load-time silence

When a level loads, receivers settle into their correct pose without firing feedback. Without this, a checkpoint reload plays every solved door in the room at once on the first frame.


Part 2: Press-to-Use Interactables

Separate from the signal toolkit: the things a player walks up to and presses a button on. NPCs, doors, pickups, shop hats.

Each player carries an Interaction Component, a small probe in front of the character that finds the nearest interactable, shows its prompt, and fires it on the interact press. In split-screen each press is filtered against that player's own pad, or either pad would trigger both players' interactors.

Gating options

OptionValues
Who can use itKoopa · Kiko · Both
How it firesInput (prompt appears, press to use) · Trigger (walking into it uses it, as with touch pickups)
How oftenSingle Use · Multi Use, with a re-use cooldown

The co-op presence gate

A second interaction component (NewInteractable) adds the modes that make two-player rooms work:

  • Either: one character, whichever arrives.
  • Turtle / Seagull: character-specific.
  • Only One: fires only while exactly one character is present.
  • Both: fires only while both characters are standing there at once.
"Both" is the most under-used tool in the toolkit

It is the cleanest way to force the two players into the same place at the same time: a held door, a two-handed lever, a ceremonial gate. The Systems - Elder Trials entry ritual (both players standing in a circle, a timer filling, then a fade) is exactly this pattern and should be built on it.

Grouped interactions

An Interaction Group watches a list of interactables and fires once all of them have been used, in any order. This is the "light all four braziers" pattern.


Triggerables

A triggerable is anything on the receiving end: an animation, a level event, a puzzle segment, a cutscene, a spawn. Cause and effect.

In practice this means: every signal and every interactable exposes a UnityEvent alongside its built-in behaviour. The built-in behaviours cover the common cases (move, show/hide, water level) without wiring; the UnityEvent is the escape hatch for the moments that want an Animator, a camera cue, a dialogue trigger or a bespoke script.


Biome Re-Skinning

The same interactable wears a different costume in every biome and behaves identically everywhere. A pressure plate in Sandy Shores is a barnacled stone slab; in the Emerald Canopy it is a mossy root pad; in the Engine it is a riveted pedal. Nothing about how it works changes.

This is why art always sits on a child object, and why the character-filter colour is applied as a tint over whatever art is present rather than baked into a material. A biome art pass re-dresses a room without re-authoring a single puzzle, and the amber/green/blue rule survives the re-dress.

Linked from

Edit this page · Out-of-Water-Docs/02 Game Systems/Systems - Interactable and Triggerable.md