Linked Object System
Drives Animator bools and two audio objects from interactions and triggers: doors, buttons, pressure plates, lights. It replaces the Interact Script, Logic Script, Pickup Detector and Player Trigger.
Requires:
- Collider (set to Is Trigger for the trigger types; any collider for interactions)
- A GameObject of its own, or one whose other Udon scripts use Manual sync (or none). It uses Manual sync itself, which can't share a GameObject with VRC Object Sync or Continuous scripts.
Debug Mode - Type: Boolean
- Logs every change to the console.
Delayed Interact Time - Type: Float
- How long a Temporary interaction stays on, in seconds.
Exclude Layers - Type: LayerMask
- Pickups on these layers don't count for the Object trigger.
Trigger Type - Type: Enum
- Who keeps the output on while inside the trigger:
- None: the trigger isn't used.
- Player: any player.
- Object: any pickup (a GameObject with VRC Pickup).
- Both Player And Object: either.
Interaction Type - Type: Enum
- What interacting with the object does:
- None: it can't be interacted with.
- Permanent: turns the output on for good.
- Temporary: turns it on for Delayed Interact Time seconds; it can't be used again until then.
- Toggle: turns it on and off.
Output Animators / Output Parameter Names - Type: Arrays
- Each Animator gets its matching bool parameter set to the output. Empty entries are skipped.
Audio Object True / Audio Object False - Type: GameObject
- Audio Object True is active while the output is on, Audio Object False while it's off. Either can be left empty.
Script Behavior:
- The output is on while the interaction is on, or anyone or anything counted is inside the trigger.
- Interactions are synced: everyone sees them, including players who join later.
- Triggers aren't synced, because every player sees the same players and synced pickups enter. A player is only counted once, players who leave the instance stop counting, and pickups that are disabled or destroyed inside stop counting within a second.
Upgrading from 1.0.x:
- Interactions used to show only for the player who interacted; now they're synced.
- Interactions and triggers used to share one counter, so a trigger could end a Temporary interaction early or stop a Toggle; now they're separate.
- Audio objects used to switch only when both were assigned; now each works on its own.
- The behaviour switches to Manual sync. If it shares a GameObject with VRC Object Sync or a Continuous script, move it to its own GameObject.