
Learn to build a robust first-person controller with the Unity input system: create input actions and maps, implement a code-driven input handler, and enable rebinding with JSON-based save and load.
Create the input actions asset in the Unity input system by adding an assets folder named input system, naming it player actions, and enabling the generate C# class.
Bind jump to space using Unity's input system, implement a player inputs handler that subscribes to jump performed and cancelled, and expose a jump_triggered flag for the player to respond.
Bind a sprint action to the left shift key using the Unity Input System, update a public bool sprintTriggered flag in the player input handler, and verify with debug logs.
In this video, we will create the Input Action for movement, and add the code to the handler to read that data
Implement movement using the Unity input system by converting the input vector2 to a world-direction vector3 aligned with the player's facing, then apply walk speed and sprint multiplier each frame.
Create a rotation action in the Unity input system bound to mouse delta and wire it to a rotation vector in the player input handler.
Add rotation code to the player script to enable mouse look with yaw, keep forward movement aligned with the player's forward, and clamp vertical look with the camera handling pitch.
Wrap up the Unity input system by generating a C# class, wiring a code-driven handler for movement and jump, and implementing rebinding UI with a json saved via PlayerPrefs.
I’m Tee, one of the game developers at IOdaw Games.
We've designed this course to not only give you the skills to "make the new Input System work" but also the tips to "make it professional."
In this series, we aren't going to be using the Unity Player Input component. We aren't just going to drag and drop a script and call it a day. We are going to adopt a code-driven workflow used by professional studios. We will generate C# classes directly from our Input Assets, giving us strong typing and total control over our code.
What we will build together:
We will build a fully functional First Person Controller from an empty project.
You will learn how to:
Architect for Scalability: We will separate our concerns by building a dedicated Input Handler that listens for raw events and passes that data to a Player Movement script. This ensures your game logic remains clean and your input logic stays flexible.
Handle Complex Inputs: We’ll map Actions for Jumping, Sprinting, Movement (Vector2), and Mouse Look (Delta), binding them to keyboard and mouse inputs.
Create a Rebinding System: We believe every game today should give the player the ability to rebind the controls to their preferences. To that end, we will take the comprehensive UI that Unity provides and make it our own, customizing its look and its code.
Persist User Data: A rebinding system is useless if it resets when the game closes. We will write a custom Save/Load system using JSON and PlayerPrefs to ensure your players' preferences are remembered.
Why this course?
Most tutorials show you the "easy" way to use the Input System. This course will have you write the code that actually controls and drives the player GameObject. By the end of this series, you won't just have a character that moves; you will have a robust, reusable Input Architecture that you can drop into any future project.