Configurable AAA-quality movement, camera, and multiplayer networking, ready to use out of the box
The U3D Universal Character Controller
A configurable AAA-quality character controller with walking, running, jumping, crouching, flying, teleportation, first- and third-person camera, gamepad support, and full multiplayer sync built in. All 25+ features are exposed in the Unity Inspector and work with networking turned on by default.
🎯 Where to find it
The player controller prefab lives at Assets → U3D → Prefabs → U3D_PlayerController. Only modify the U3D Player Controller component in the Inspector — other components on the prefab handle networking and animation and shouldn't be changed.
🎬 See it running
The template ships with an interactive demo scene at Assets → U3D → U3D_Demo and online at Spacedolphin's U3D Gym. Press Play and try every controller feature — walk, run, jump, fly, teleport, crouch, zoom, switch perspective — alongside the Project Tools interactivity and Quest System integrations. The fastest way to see what's available and how it feels before customizing your own scene.
Core Capabilities
What the controller handles for you
A quick map of what's built in. Click any title to jump to the detailed section.
Walk, run, jump, crouch, zoom, sprint, auto-run, both-button forward, and configurable gravity. Multi-jump supports double, triple, or any number of mid-air jumps at different heights.
⚡ Includes:
Separate walk and run speeds, tunable gravity, crouch with automatic collider adjustment, and sprint and auto-run toggles for long sessions.
First-person, third-person, and smooth-scroll switching. AAA third-person camera orbits the character with collision-aware positioning so it stays usable in tight spaces.
⚡ Includes:
Always-on free look, left-click orbit and right-click rotate, FOV zoom, smooth perspective transitions, and eye-level pivot behavior.
Flight mode with full 6-degree-of-freedom control, teleportation to where the player is looking, and world interaction states for riding, climbing, and swimming.
⚡ Includes:
Toggle flight, line-of-sight teleport with collision respect, rideable mounting with auto-dismount, climbing physics, and swimming with buoyancy.
Built on Unity's new Input System with keyboard, mouse, and gamepad support. Every action key is remappable. Mouse sensitivity is calibrated per platform.
⚡ Includes:
Custom key bindings, separate WebGL and mobile sensitivity multipliers, optional mouse smoothing, and toggle-based sprint and auto-run.
Browser-based VR built in. Visitors on a WebXR headset like Meta Quest enter your experience directly from a URL — no app store, no sideloading, no separate build.
⚡ Includes:
Parabolic-arc teleport with reticle, controllers driving avatar arms via IK, networked head tracking so others see you look around, snap turning, and cross-platform multiplayer with desktop visitors in the same session.
Drop in any humanoid character — Ready Player Me, VRoid Studio, Mixamo, Asset Store, your own custom rig — and the controller drives it with eight networked animation states. Idle, walk, run, jump, crouch, fly, swim, climb, all synced across multiplayer.
⚡ Includes:
Drag-and-drop avatar assignment, automatic humanoid detection, eight pre-wired animation states with creator-editable clips, and full avatar system docs →
Movement Features
Configurable movement, grouped by category
Every setting is exposed in the Inspector. Defaults are tuned to feel good out of the box — change only what your project needs.
🚶
Walk & Run Speeds
Separate walk and run speeds, adjustable in the Inspector. Defaults suit general-purpose exploration; raise or lower to match your pacing.
⬆️
Multi-Jump System
Configurable base jump height plus an array for optional double or triple jumps at different heights. Leave the array empty for a single-jump feel.
🌍
Gravity Control
Set gravity per project. Use the default for Earth-like movement, reduce for low-gravity environments, or push higher for weighty jumps.
🔄
Crouch Toggle
Toggle crouch with automatic height adjustment. Useful for stealth gameplay, fitting through low spaces, or reading floor-level details.
🔎
Zoom
Hold to zoom the camera in for closer inspection. Useful for detail work, examining objects, and distant views.
✈️
Flight Mode
Press F to toggle full 6-degree-of-freedom flight. Gravity turns off while flying, and jump and crouch become vertical ascent and descent. Useful for creative tours, level review, large open worlds, and accessibility for players who can't navigate terrain easily.
🚀
Teleportation
Teleport to where the player is looking. Works at a distance and respects collision, so players land on solid ground. Good for large worlds and as an accessibility alternative to long traversal.
🏃
Sprint & Auto-Run Toggles
Sprint toggle and Num Lock auto-run let players cross long distances without holding a key down. Both are remappable and can be disabled per project.
🎯
Both-Button Mouse Move
Hold both mouse buttons to move forward while steering with the mouse. Classic MMO and exploration-style control for players who prefer it over WASD.
⌨️
Custom Key Bindings
Every action key is remappable in the Inspector. Change defaults per project or per audience without editing any code.
📏
Movement Toggles
Num Lock toggles auto-run, and sprint can be a toggle instead of a held key. Both reduce strain during long sessions.
🎮
Unity 6 Input System
Built on Unity's new Input System, with gamepad support included alongside keyboard and mouse.
🖱️
Mouse Sensitivity Calibration
Separate sensitivity multipliers for WebGL, mobile, and user-set preferences, plus optional mouse smoothing. Sensitivity behaves consistently across platforms without per-project tweaking.
Camera System
First-person, third-person, and scroll-to-switch
The camera handles all three perspective modes, orbits around the character in third person, and respects collision so it doesn't clip through walls.
🎮 AAA Camera Control Modes
Always-On Free Look (default): Move the mouse to look around without holding a button. Toggle it off if you'd prefer the older button-to-look style.
Left-click orbit, right-click rotate: Hold left to orbit the camera around the character without turning them. Hold right to rotate the character with the camera.
Both-button forward movement: Hold both mouse buttons to move forward while steering with mouse look. Classic MMO and exploration-style control.
🆓
Always-On Free Look
Move the mouse to look around instantly, no button required. Toggle off in the Inspector for button-based camera control.
🎬
AAA Camera Pivot
Third-person camera pivots around the character with separate controls for orbiting, rotating, and both-button forward movement.
👁️
Perspective Modes
Choose First Person Only, Third Person Only, or Smooth Scroll (players switch between them with the mouse wheel during play).
🔍
Mouse Sensitivity
Fine-tuned look responsiveness with optional smoothing. Consistent feel across WebGL, mobile, and desktop.
📏
Third-Person Distance
Set how far the third-person camera sits behind the character, with collision detection that pulls it closer when walls get in the way.
🔎
Zoom System
FOV-based zoom for close inspection. Works in first and third person.
🎬
Smooth Transitions
Switching perspectives eases the camera between positions at eye level. No jump cuts.
🛡️
Collision Detection
The camera keeps itself out of walls and objects, so the view stays usable in tight spaces and around interior geometry.
Avatar System
Drop in a humanoid, get a fully animated multiplayer character
The controller comes with a complete avatar system. Assign any humanoid model and it just works — walking, running, jumping, crouching, flying, swimming, and climbing all animate automatically and sync across multiplayer.
🎭
Drag-and-Drop Avatars
Assign any humanoid FBX to the Avatar field on U3DAvatarManager. The system auto-detects the humanoid rig, sets scale, and wires up the animator. Works with Ready Player Me, VRoid Studio, Mixamo, Asset Store characters, and your own custom rigs without modification.
🎬
Eight Animation States
Idle, walking, running, jumping, crouching, flying, swimming, and climbing all transition automatically based on what the player is doing. No state machine wiring required.
🌐
Networked by Default
Animation state syncs across all clients automatically through Photon Fusion 2. Other players see your avatar move correctly without any networking code from you.
👁️
Smart First-Person Hiding
The avatar hides automatically when you're in first person so it doesn't block the view, while remaining fully visible to other players in the multiplayer session.
🔄
Editable Animation Clips
Open U3DAnimatorController and swap the clip on any state to change how that movement looks. Works with Mixamo clips, Asset Store animations, your own Blender exports — anything humanoid-rigged.
😌
VR Idle Calm
In VR, the avatar's idle animation is suppressed so subtle breathing and weight-shift motion doesn't transfer to the visitor's view through the head bone. All other animations still play normally.
Want the deep dive?
The full avatar system has its own guide covering avatar sources, the animation state machine, clip swapping, and VR tracking. Avatar Animation System docs →
Advanced Features
🌐
Multiplayer Networking
Photon Fusion 2 integration is built in. Position, rotation, movement state, and teleports sync across clients without any extra setup.
🚀 What's synced:
Position interpolation, rotation, movement state, jump and teleport events, avatar animation state, and camera pitch for remote player orientation.
🎮
Interaction System
A built-in interaction system detects nearby U3D interactable objects automatically. Walk up to something and press the interact key.
🔧 Works with:
The full Project Tools suite — Grabbable, Throwable, Kickable, Pushable, Climbable, Rideable, Interact Triggers, and the Quest System. Interactivity tools →
👁️
Gaze-Based UI Interaction
Worldspace UI now responds to where the player is looking. Look at a button, slider track, toggle, or any standard Unity UI element and use the interact control to click it. Clicking a slider or scrollbar track advances the handle. The same controls work on desktop and in VR, so a video player's play button, a settings panel, or any UI a creator builds behaves the same way for everyone in the experience.
🎯 Optional aiming reticle:
A small marker centered in the player's view that shows where the gaze is pointed. It isn't included by default, so existing scenes look exactly as they did. Creators who want it add it from the Creator Dashboard, the same place the core systems get added, and can drop in their own image for the marker.
🔧 Works with:
Any standard Unity UI element on a worldspace canvas — Button, Slider, Toggle, Scrollbar, ScrollRect, Dropdown, InputField — and U3DWorldspaceUI components for billboarded panels.
🥽
VR / WebXR Support
Browser-based VR built in. When visitors open your experience on a WebXR-compatible headset like Meta Quest, the controller switches into VR mode automatically — no separate build, no app store, no sideloading.
🚀 Parabolic-arc teleport:
Click the left stick to arm, push forward to aim with a visible reticle on the landing surface, release to fire. Same gesture you'd expect from any polished VR app.
🙌 Hand tracking via avatar IK:
Real controllers drive the avatar's arms through two-bone IK. Works on any humanoid rig. Wrist position and rotation network to other players, so the upper body reads naturally to everyone in the room.
👀 Networked head tracking:
Head rotation syncs across clients, so other players see exactly where you're looking. Combined with hand tracking, the full upper body reads naturally to everyone in the session.
👁️ Custom avatar eye height:
Different humanoid rigs place the head bone differently. If you swap in your own avatar and the VR camera sits too low or too far back, adjust the VR Eye Offset Y and Z fields on U3D Player Controller. Full details in the avatar docs →
🎮 Plus the rest:
Snap turning, full crouch and fly support, cross-platform multiplayer with desktop visitors. Powered by De-Panther's WebXR Export package.
🧗
World Interaction States
The controller handles riding, climbing, and swimming as first-class movement states. Each one integrates cleanly with the Project Tools so your player doesn't fight the environment.
🌊 Live states:
Make Rideable parents the player smoothly to moving platforms and auto-dismounts on movement or jump. Make Climbable pauses gravity and hands momentum back on release. Swimming physics, buoyancy, and animation are live on the controller — the one-click Swimmable tool is coming next.
Customization
🛡️ Protecting Your Networking
Only modify the U3D Player Controller component. Other components on the prefab handle networking and animation, and editing them can break multiplayer.
Every setting is exposed in the Inspector, organized into expandable sections: Basic Movement, Jump Settings, Advanced Movement, Perspective Control, Mouse Look, AAA Camera, and Input Customization. Edit values, press Play to test, iterate.