What is the Interactivity System?
Transform static 3D objects into engaging interactive experiences! U3D Interactivity Tools let you add professional-grade interactive behaviors to any object with a single click, supporting both single-player and real-time multiplayer scenarios.
Automatic Multiplayer Support
One Click
Every interaction tool includes NetworkObject support!
Leave Network Object enabled when applying tools - once scene is saved, behaviors work across all connected players
Powered by Photon Fusion 2 with optimized WebGL performance
Getting Started
- Click on any GameObject in your scene
- Can be primitives, imported models, or complex hierarchies
- Object will auto-get required components (colliders, rigidbodies)
- Go to Creator Dashboard → Project Tools → Interactions tab
- Pick the behavior that fits your experience
- Works with any Unity-compatible 3D content
- Click Apply to add the behavior
- Customize component settings in the Inspector
- Connect UnityEvents for custom responses
- Test in Play mode immediately
- All tools work as single player in local testing
- Deploy to get full multiplayer experience
Interactive Behaviors You Can Add
Add Object Spawner
"Spawn prefab instances at this location on interact or trigger"
Places a spawn point that instantiates a configured prefab when a player interacts or a trigger fires. Supports both local and networked spawning. Networked spawns are host-authoritative via RPC so all clients see the result.
Perfect for:
- Item dispensers and pickup spawns
- Respawning collectibles and resources
- Quest item delivery points
- Particle or prop poppers on trigger
Make Grabbable
"Pick up from distance, attach to hand position"
Objects can be picked up from adjustable distances using precise raycast or radius detection. Automatically handles hand attachment and collision management.
Perfect for:
- Interactive props and tools
- Collectible items and treasures
- Building blocks and creative materials
- Key objects for puzzle mechanics
Make Throwable
"Physics-based throwing with auto-sleep"
Must be applied to grabbable objects. Handles camera-direction throwing, physics activation, automatic sleep states, and world bounds recovery.
Great for:
- Sports equipment and game pieces
- Interactive projectiles and toys
- Puzzle elements requiring placement
- Creative building and experimentation
Make Kickable
"Ground-level physics with camera-directed kicks"
Objects at ground level can be kicked with configurable force and upward boost. Uses camera direction for aim, with automatic physics sleep and world bounds recovery. Can be combined with Grabbable on the same object with automatic key remapping.
Perfect for:
- Balls, cans, and ground-level props
- Sports and playground games
- Physics puzzles and chain reactions
- Environmental storytelling with loose objects
Make Climbable
"Layer-based climbing with stamina and auto-climb"
Designate surfaces as climbable using Unity layers. Players automatically detect climbable walls via sphere-cast and can climb with configurable speed, stamina drain, and auto-climb or manual toggle modes. Fully networked with synced climbing state.
Perfect for:
- Vertical traversal and wall climbing
- Obstacle courses and platforming challenges
- Exploration with height-based rewards
- Stamina-gated progression areas
Make Swimmable
"Water volumes with swimming physics"
Create water areas where players can swim with modified movement physics and underwater effects.
Make Enter Trigger
"Execute actions when players enter area"
Detects U3D players or tagged objects entering trigger zones. Includes cooldown timers, one-time triggers, and separate events for players vs objects.
Perfect for:
- Area activation and lighting systems
- Sound zones and ambient triggers
- Quest checkpoints and progression
- Interactive environment responses
Make Exit Trigger
"Execute actions when players leave area"
Companion to Enter Triggers with identical detection and configuration options. Perfect for cleanup actions and state resets.
Great for:
- Light and sound cleanup systems
- Temporary effect removal
- Security and access control
- Resource management and optimization
Add Click Trigger
"Execute actions when players click on this object"
Fires UnityEvents when a U3D player clicks on the object using camera-direction raycast. Supports cooldown timers, one-time activation, and separate events for players vs tagged objects. Requires a collider.
Great for:
- Buttons, levers, and switches
- Clickable story objects and collectibles
- Interactive signs and information panels
- Puzzle activators and quest targets
Add Trigger Zone
"Fire events when the zone goes from empty to occupied, and when it clears"
Tracks how many qualifying objects are inside and fires OnZoneOccupied when occupancy goes from zero to one, and OnZoneCleared when it returns to zero. Use this instead of paired Enter/Exit triggers when you need stateful "while occupied" logic.
Perfect for:
- Pressure plates that stay active while stood on
- Puzzles requiring multiple objects in a zone simultaneously
- Doors and gates that open while a player is present
- Any logic that depends on whether the zone is currently occupied
Make Random
"Randomize between multiple GameObjects"
Component with configurable list that randomizes activation between audio, particles, or other GameObjects on trigger.
Make Mutually Exclusive
"Only one can be selected at a time"
Groups objects so that activating one deactivates others. Perfect for selection menus, radio-button-style choices, and exclusive state systems.
Make Object Destroy Trigger
"Remove objects when triggered"
Destroys or deactivates target objects on trigger activation. Useful for collectibles, breakable objects, and consumable items.
Make Object Reset Trigger
"Return objects to starting position"
Resets target objects to their original position and rotation. Great for puzzle resets, cleanup zones, and retry mechanics.
Add Player Reset Trigger
"Reset player position and state to spawn point"
Returns the player to their spawn point and resets state. Essential for out-of-bounds recovery, death zones, and level restart areas.
Movement
Add Seat
"Sit animation with movement exit"
Adds a snap point that triggers an avatar sit animation. Players exit by resuming movement input. Multiple seats supported on a single object. Works on static chairs and benches as well as moving rideables — a ferris wheel car can have seats, and so can a park bench.
Make Rideable
"Stand on top and move with the object"
Players standing on the surface are carried with it automatically — no extra setup required. Choose from three movement modes in the Inspector: Waypoints moves the object between placed Transform markers you position in the scene; Rotation spins it continuously around a local axis; Static keeps it in place so Steerable can drive it instead. Loop and PingPong options for waypoint paths. Fully multiplayer — movement is authoritative and synced to all clients.
Perfect for:
- Elevators and moving platforms
- Ferris wheels, carousels, and turntables
- Trains, boats, and patrol vehicles
- Any surface that moves and carries passengers
Make Steerable
"Player input steers the object"
Extends Make Rideable so the player's movement input controls the object directly. W/S accelerates and decelerates, A/D yaws. The player avatar faces the direction of travel. A ground-check toggle supports wheeled vehicles that must stay on terrain as well as free-moving objects like hot air balloons and submarines. Wheel spin and other visual animations can be added separately via Animator.
Perfect for:
- Cars, go-karts, and wheeled vehicles
- Boats, magic carpets, and hovercraft
- Hot air balloons and free-flying vehicles
- Any object the player drives rather than rides passively
Add Scene Portal
"Portal to load a different scene"
Transition players to a different Unity scene from this location.
Add 1-Way Portal
"Portal for one-direction travel within scene"
Teleports players from this portal to a destination point within the same scene.
Add 2-Way Portal
"Portal for bi-directional travel within scene"
Linked portals that teleport players in either direction between two points.
Object Spawner
Prefab Instantiation
The Object Spawner places a prefab instance at the spawner's scene position when triggered. Assign your prefab in the Inspector and connect an Enter Trigger or interaction event to activate it.
Networked vs Local Spawning
- Local spawn: Instantiates a standard GameObject visible only to the triggering client. Use for visual effects and non-shared props.
- Networked spawn: Sends an RPC to the host, which calls
runner.Spawn()so the object appears for all connected players. Requires the prefab to have a NetworkObject component.
Grabbable Objects
Distance-Based Interaction
Grabbable objects support both touch-based grabbing and distance-based grabbing using camera direction. The system automatically detects U3D players and handles hand attachment when the interact button is pressed (R key by default).
Setup Options
- Grab Detection Radius: Use radius-based detection or precise raycast
- Distance Configuration: Set minimum and maximum grab distances
- Offset: Adjust where grabbed object appears relative to hand bone
- Hand Attachment: Specify hand bone name or use player position
- Multi-Grab: Allow multiple objects to be held simultaneously
Safety Features
Grabbable objects include automatic safety recovery. If an object falls through the world or moves too far from spawn, it automatically returns to its original position.
Throwable Objects
Composing with Grabbable
Throwable is designed to compose with Grabbable, not replace it. Applying "Make Throwable" from the dashboard adds both U3DGrabbable and U3DThrowable to the object — Grabbable handles pickup and hold, Throwable handles release physics. Both components remain active on the same object and work together. You can configure each independently in the Inspector.
Physics-Based Throwing
When released, throwable objects launch in the camera direction with configurable force and automatic physics management.
Smart Physics Management
- Auto-Sleep: Objects automatically sleep when velocity drops below threshold
- World Bounds Safety: Automatic recovery if objects go out of bounds
- Grab-Throw Cycling: Seamless transition between grabbed and thrown states
- Impact Detection: Events fire when thrown objects hit surfaces
- Auto Key Remapping: Throw key automatically remaps to avoid conflicts with grabbable and kickable components on the same object
Inspector Fields
- Drop On Release: When enabled, releasing the grab key drops the object straight down instead of throwing it. Use this for objects that should be placed rather than launched — crates you stack, puzzle pieces you set down, and similar.
Kickable Objects
Ground-Level Physics Interaction
Kickable objects use ground-level proximity detection so players can kick objects at their feet. The kick direction follows the camera forward vector with a configurable upward boost, creating natural arcing trajectories.
Setup Options
- Kick Force: Base force multiplier applied on kick
- Upward Boost: Additional upward force for arcing trajectories
- Max Kick Velocity: Velocity cap to prevent objects flying out of bounds
- Detection Radius: Ground-level radius for foot collision detection
- Max Kick Distance: Maximum distance the player can be from the object to kick it
Smart Physics Management
- Auto-Sleep: Objects automatically return to sleep state when velocity drops below threshold or after a configurable timeout
- World Bounds Safety: Automatic position recovery if objects fall through the floor or travel too far from origin
- Grabbable Compatibility: Can coexist with U3DGrabbable on the same object. Interaction keys are automatically remapped to prevent conflicts
- Impact Detection: Events fire when kicked objects collide with surfaces
Events
- OnKicked: Fires when object is successfully kicked
- OnImpact: Fires when kicked object hits something
- OnSleep: Fires when object returns to sleep after kick
- OnEnterKickRange / OnExitKickRange: Fires when player enters or leaves kick proximity
- OnKickFailed: Fires when a kick attempt fails
- OnWorldBoundsReset: Fires when object is reset due to world bounds violation
Climbable Surfaces
Layer-Based Surface Detection
The climbing system uses Unity's layer system to identify climbable surfaces. The player's U3DClimbingController performs a forward sphere-cast to detect walls on the designated Climbable layer, enabling automatic or manual climbing with networked state synchronization.
Setup Options
- Climbable Layer Mask: Assign surfaces to the Climbable layer (default: layer 6)
- Check Distance: How far forward the player checks for climbable surfaces
- Check Radius: Sphere-cast radius for surface detection
- Auto-Climb: When enabled, players climb automatically on contact while moving. When disabled, requires holding the climb key (Left Control by default)
Climbing Physics
- Climb Speed: Horizontal movement speed along the surface
- Climb Up/Down Speed: Separate vertical speed controls for ascending and descending
- Surface Normal Detection: Movement direction calculated relative to the wall surface for natural traversal
Stamina System
- Stamina Pool: Configurable stamina that drains while climbing
- Drain Rate: How fast stamina depletes during active climbing
- Auto-Recovery: Stamina regenerates at half the drain rate when not climbing
- Exhaustion: Players automatically release the wall when stamina reaches zero
Enter/Exit Triggers
Flexible Player Detection
Trigger systems can detect U3D players specifically, objects with specific tags, or any colliding object. Each offers separate UnityEvents for different detection types.
Advanced Trigger Features
- Cooldown Timers: Prevent rapid re-triggering with configurable delays
- One-Time Triggers: Fire only once per session
- Multiple Event Types: Separate events for players, tagged objects, and general objects
- Authority Management: Proper multiplayer state synchronization
Click Trigger
Camera Raycast Interaction
Click Triggers fire when a U3D player clicks while the camera raycast hits the object. The collider on the object defines the clickable area. Detection range is configurable.
Configuration Options
- Required Tag: Optionally restrict activation to players or objects with a specific tag
- Trigger Once: Deactivates after first successful click
- Cooldown Time: Minimum seconds between activations
- Detect U3D Player / Detect Tagged Objects: Separate flags matching the Enter/Exit Trigger pattern
- Max Click Distance: How far the player can be when clicking
- Events: OnClicked, OnClickFailed fire on each attempt
Trigger Zone
Stateful Occupancy Detection
Trigger Zone tracks how many qualifying objects are currently inside it and fires events when that count crosses zero in either direction. Use it when you need to know whether the zone is occupied right now — not just that something entered or left.
Use Enter/Exit Triggers when you want a fire-and-forget event on each entry or exit. Use Trigger Zone when the state of the zone itself matters — a door that should stay open while anyone is standing in it, or a pressure plate that needs all objects removed before it resets.
Inspector Fields
- Require Tag: Only count objects with this tag toward occupancy. Leave blank to count all colliders.
- Trigger Once: When enabled, OnZoneOccupied fires only the first time the zone is occupied. OnZoneCleared still fires normally.
Events
- OnZoneOccupied: Fires when occupancy goes from zero to one — the zone just became occupied.
- OnZoneCleared: Fires when occupancy returns to zero — the zone is now empty.
Scripting
Call ResetZone() on the component at runtime to clear the occupant count and re-arm a one-time trigger. This is useful for puzzle resets where you need the zone to be re-triggerable after a sequence completes.
Example: Pressure Plate Puzzle
A classic use case — a stone slab that activates a gate while a player stands on it and deactivates the gate when they leave.
- Select the pressure plate mesh and apply Add Trigger Zone from the dashboard.
- In the Inspector, set Require Tag to
Playerso only player characters count. - Connect OnZoneOccupied → your gate's
Animator.SetBool("Open", true)(or equivalent). - Connect OnZoneCleared → your gate's
Animator.SetBool("Open", false).
The gate opens the moment a player steps on and closes as soon as the last player leaves. No scripting required beyond wiring the UnityEvents.
Make Rideable
How It Works
Make Rideable adds a U3DRideableController to your object. When a player steps onto the rideable surface, they are carried with it automatically. Movement is driven inside Fusion's deterministic tick so all clients stay in sync — the platform moves and the player rides it within the same frame, with no jitter or lag compensation needed.
Platform Setup
- Select your platform mesh in the scene and apply Make Rideable from the Creator Dashboard Interactions tab, under Movement.
- A
RideableTriggerchild and aWaypoint_0child are created automatically. The trigger detects when players step on and off. The waypoint marks the starting position. - To create a moving platform, duplicate
Waypoint_0, rename itWaypoint_1, and move it to the destination. Assign both to the Waypoints array on theU3DRideableControllercomponent in the Inspector. - Set Loop Mode to Loop or PingPong, adjust Speed, and optionally set a Pause At Waypoint duration.
Movement Modes
- Waypoints — moves between Transform markers you place in the scene. Markers should be children of the rideable so they move with it if you reposition it in the editor. Their world-space positions are cached at runtime so they don't chase the platform as it moves.
- Rotation — spins the object continuously around a configurable local axis at a fixed speed. No waypoints needed. Use for ferris wheels, turntables, and revolving doors.
- Static — the object doesn't move on its own. Players can still ride it, and Make Steerable will use this mode to take over movement via player input.
Composing the Full Vehicle System
The three Movement tools are designed to layer on top of each other. Make Rideable is the foundation — it handles passenger carrying and self-movement. Make Steerable will extend it so player input drives the object. Add Seat will add snap points for sit animations on top of either. A car, for example, would use Make Rideable in Static mode, Make Steerable for player-driven movement, and Add Seat for the driver and passenger positions.
Planned Interactive Features
Movement Systems
Swimming volumes will provide modified movement physics with avatar animation and underwater effect triggers for realistic swimming experiences.
Movement Tools
Make Steerable will extend Make Rideable so player movement input drives the object directly — W/S for acceleration, A/D for yaw, with a ground-check toggle for wheeled versus free-moving vehicles. Add Seat will place snap points on any object, static or moving, triggering avatar sit animations that players exit by resuming movement input. Together with Make Rideable, these three tools cover everything from park benches to hot air balloons.
Logic and State Tools
Randomized GameObject activation and mutually exclusive selection groups will enable more sophisticated interactive logic without custom scripting.
Object Management
Object destroy triggers for collectibles and breakable items, object reset triggers for puzzle resets, and player reset triggers for out-of-bounds recovery and death zones will round out the interaction toolkit.
Portals
Scene portals will transition players to a different Unity scene. Within-scene portals come in two flavours: one-way portals that teleport players from a source point to a destination, and two-way linked portals that allow travel in either direction between two points.
Best Practices for Interactive Experiences
Object Selection
- Start with simple primitives to test behaviors
- Apply interactive tools to parent objects, not individual meshes
- Consider object scale - tiny objects are hard to grab
- Connect clear visual indicators to Events for interactive elements (highlights, material swaps, animations, particles, etc.)
User Experience
- Provide clear feedback when objects are interacted with
- Use UnityEvents to connect interactions to visual and audio responses
- Test grab distances - too far feels unnatural, too close is frustrating
- Consider accessibility - not all players can perform complex motions
Interactive Experience Examples
- Grabbable keys and puzzle pieces: Essential items for progression
- Throwable game pieces: Physics-based quest step activation
- Enter triggers for rooms: Area-based sound, effect, and post process changes
- Grabbable building blocks: Free-form construction materials
- Throwable physics objects: Test structural stability
- Object spawners: Dispense fresh building pieces on demand
- Enter/Exit triggers: Chapter progression and character dialogue
- Grabbable story artifacts: Interactive props that advance narrative
- Click triggers on objects: Examine items, read inscriptions, activate story beats
- Shared grabbable games: Tabletop game pieces, collaborative tools
- Kickable game equipment: Footballs, soccer balls, ground-level toys
- Area-based activities: Join/leave triggers for different game levels
Troubleshooting
Objects Won't Grab
- Check that object has U3DGrabbable component
- Adjust grab distance settings - may be too restrictive
Throwable Objects Not Working
- Verify object has U3DGrabbable component first
- Check that throwable was applied to a grabbable object
- Test throw force settings - may be too low to register
- If Drop On Release is enabled, the object will drop straight down instead of launching — disable it if throwing is the intended behavior
Kickable Objects Not Responding
- Verify the object has both a Rigidbody and Collider component (added automatically on Apply)
- Check kick distance - player may be too far from the object
- If combined with Grabbable, verify keys have been remapped (check console for auto-remap messages)
- If object is currently grabbed, it cannot be kicked - release it first
- Test kick force settings - may be too low to produce visible movement
Climbing Not Working
- Verify the surface GameObject is assigned to the Climbable layer (default: layer 6)
- Check that the surface has a collider (not set to trigger)
- If using manual climb mode, confirm the climb key (Left Control by default) is being held
- Check stamina - player may be exhausted. Wait for stamina to regenerate
- Ensure the player is facing and moving toward the climbable surface
Triggers Not Firing
- Confirm trigger collider is enabled and set to "Is Trigger"
- Check player detection settings - may need to add tag
- Verify cooldown timer isn't preventing re-triggering
- Test with "trigger once" disabled to allow repeated activation
Trigger Zone Not Firing
- Confirm the collider is set to "Is Trigger" — solid colliders do not generate trigger events
- If Require Tag is set, confirm the entering object has exactly that tag
- OnZoneOccupied only fires when count goes from zero to one — if something was already inside when Play started, it may not fire. Test with a clean entry
- If Trigger Once is enabled and the zone has already fired, call ResetZone() to re-arm it
Multiplayer Sync Issues
- Ensure NetworkObject component is added to interactive objects
- Ensure scene has been saved (required to trigger network bake)
- Test deployed scene in multiple tabs to simulate multiple players
Understanding Multiplayer Synchronization
How NetworkObject Integration Works
When you enable "NetworkObject for multiplayer" on any interaction tool:
- Automatic Setup: NetworkObject component is added to your GameObject
- Authority Management: Photon Fusion 2 handles who controls the object
- State Sync: Object state (grabbed, kicked, triggered, etc.) syncs across all players
- Event Broadcasting: UnityEvents fire for all players simultaneously
- Physics Sync: NetworkObject synchronizes physics state across players
When to Enable Multiplayer Sync
- Shared Objects: Items that multiple players should see and interact with
- Cooperative Elements: Puzzles and challenges requiring coordination
- Competitive Interactions: Challenges, games, and contests requiring comparison
- World State Changes: Triggers that affect the environment for everyone
Single-Player vs Multiplayer Mode
All interaction tools work in both modes:
- Without NetworkObject: Faster performance, local-only interactions
- With NetworkObject: Slightly higher overhead, but shared across all players
- Mixed Approach: Some objects networked, others local-only
- Runtime Detection: Tools automatically adapt based on NetworkObject presence
Advanced Configuration
UnityEvent Integration
Every interaction tool provides multiple UnityEvents that you can connect to:
- Visual Responses: Change materials, sounds, effects, or animations
- Game Mechanics: Update UI, scores, game states
- Custom Logic: Connect to your own scripts and systems
Physics Integration
Interaction tools work seamlessly with Unity's physics system:
- Automatic Colliders: Tools add primitive colliders when required
- Rigidbody Management: Smart activation and deactivation for performance
- Physics Materials: Support for custom bounce, friction, and sound
- Joint Compatibility: Works with Unity's joint system for complex mechanics
Automatic Key Remapping
When multiple interaction components share the same object, interaction keys are automatically remapped to prevent conflicts. For example, if both Grabbable and Kickable use the R key, Grabbable remaps to F. If Throwable and Kickable share a key, Throwable remaps to G. Console messages confirm any remapping at startup.
Safety and Recovery Systems
Built-in safety features protect your experience:
- World Bounds: Objects automatically return if they fall out of world
- Distance Limits: Recovery when objects travel too far from spawn
- Auto-Sleep: Physics objects sleep when not in use to save performance
- Smart Drop: Grabbable objects snap to surfaces when released
Ready to Add Interactivity!
Your interaction system is ready to transform static objects into engaging, multiplayer-synchronized experiences. Select any object and apply interactive behaviors with automatic networking support.
Start creating engaging interactions that work seamlessly across all players!
🎮 Your interactivity system is operational! Apply behaviors to any object and create engaging multiplayer experiences with Unity 6 and Photon Fusion 2.