Overview
MFPC – Modular First Person Controller
MFPC is a clean, modular, production-ready first person controller for developers who want full control — not a rigid framework.
Built for FPS, immersive sims, and narrative experiences, it provides a solid movement foundation while staying completely flexible: no forced animation systems, no UI dependencies, and no opinionated architecture.
Controller-first, not demo-first.
Take a look at the WebGL demo, documentation, roadmap, youtube tutorials and join the discord server!
Movement & Player State
- Walk, Sprint, Crouch, Jump, Aim, Lean
- Hold or Toggle modes (configurable)
- Forward-only sprint restriction
- Collision-safe auto-uncrouch
- Optional auto-unsprint when stopping movement (toggle mode)
- Optional advanced slope handling
- Optional steep slope sliding
- Physics interactions with environment.
Movement is predictable, tweakable, and free from hidden behavior.
Input Systems
- Legacy Input System controller
- New Input System controller
- Mouse + keyboard support
- Gamepad support (tested with multiple controllers)
- Sensitivity parity between input systems
- Frame-rate independent mouse smoothing (New Input System)
No need to rewrite gameplay logic when changing input workflows.
Camera System (Cinemachine-based)
MFPC is built around Cinemachine, not custom camera math.
- Virtual Camera setup for: idle, walk, sprint, crouch, aim
- FOV kick on sprint (via Virtual Camera swap)
- Headbob via Cinemachine Noise (no custom scripts)
- Custom camera blends for smooth transitions
- Lean-based camera roll (Dutch)
- Camera tilt feedback on slopes
- Separate aim camera variants
- Clean integration with camera stacks
Optional module:
Disable headbob/noise globally (no need to edit cameras manually)
All camera behavior is visual and editable — no black-box scripts.
Animation & Events (Optional Modules)
MFPC does not require an Animator — but integrates seamlessly with one.
AnimatorBridge:
- Syncs Animator parameters from controller state and velocity
- Supports movement speed, grounded, crouch, sprint, aim
- Includes jump/fall detection and vertical velocity
- Works with both input system controllers
- Optional auto-detection and LateUpdate syncing
Perfect for driving blend trees and layered animation setups without modifying the controller.
EventObserver:
- UnityEvent-based state transitions — Jump (leave ground), Land, Sprint / Crouch / Aim / Move / Lean
- Inspector-friendly — no custom scripting required
- Ideal for audio, VFX, UI, or gameplay hooks
These modules keep MFPC lightweight while enabling full production integration.
Included Animation Starter Setup
MFPC includes a lightweight first-person animation starter setup to help you quickly prototype:
- Clean first-person arms model (.fbx)
- Humanoid rig compatible
- Basic locomotion animations included
- Ready to use with AnimatorBridge
This setup is fully optional and can be replaced with your own assets without affecting the controller.
Optional Stamina System
- Sprint drain and regeneration
- Jump stamina cost
- Exhaustion and recovery behavior
- Fully optional — no UI or HUD required
Includes a demo stamina UI example, which can be completely removed without affecting MFPC.
Audio System
- Surface-based footsteps and landing sounds
- Terrain and object support
- Water surface handling
- Audio pooling (no runtime instantiation spikes)
- Easy to extend with ScriptableObjects
No hardcoded layers. No forced setup.
Architecture & Design Philosophy
MFPC is intentionally not an all-in-one solution.
- No forced Animator Controller
- No stamina system assumptions
- No UI or HUD dependencies
- No required layers or tags
- No multiplayer logic baked in
- Zero GC allocations in Update
Instead, MFPC gives you:
- Clean state logic (by exposing variables)
- Clear extension points
- Optional systems via future modules
Build exactly what you need — nothing more.