
Download and extract the project to access the source code, then open the Godot project file to study the counter rotation example. For help, contact Discord or the Q&A.
Download and install Godot from godotengine.org or Steam and Epic Games Store, with cross-platform options (Windows, Linux, macOS, Android, web). Extract, run the engine, and start the course.
Introduce setting up a Godot 4 project for a third-person shooter controller, including creating a project folder, applying CC0 textures, using a CSG combiner for prototyping, and naming collision layers.
Set up a basic character in Godot 4 with a character body, collision shape, capsule mesh, and camera, saved as a scene; attach a basic movement script.
Set up a basic camera system for a Godot 4 third-person shooter by capturing the mouse, implementing camera look, and syncing character rotation with the camera.
In Godot 4, implement a robust third-person camera with edge and rear spring arms to prevent clipping, adjust radii and margins, and add sphere shapes for reliable collision detection.
Switch the camera alignment in a Godot 4 third-person shooter using tweens and an edge spring arm. Map input to swap camera alignment for smooth, configurable transitions.
Map the right mouse button to enable aiming and tween the camera for a closer fov in Godot 4's third-person shooter, adjusting spring arm lengths for precise aiming.
Set up sprinting in Godot 4's third-person shooter by tweening the camera FOV and spring arm, introducing sprint variables and easing to smooth enter and exit transitions.
Clean up updates the camera system by introducing a left, right, center camera alignment enum and current alignment variable, then refactors swap alignment to use the enum with smoother transitions.
Use a finite state machine to manage movement and actions in Godot 4, separating idle, move, jump, fall, sprint, and crouch into distinct states for cleaner code and animation control.
Create a Godot 4 state machine with a state class. Implement enter, exit, input, update methods, use class_name, and wire a signal to switch states.
Create a Godot 4 state machine for a shooter controller with a start state, state map, and active current state; process input and physics and connect transitions via finished signals.
Create a motion class that inherits from state to manage input direction and convert 2d input to a 3d velocity using the transform basis and owner.
Build a state machine for a Godot 4 third person shooter controller, implementing idle, run, jump, and fall states with velocity, direction, gravity, and input driven transitions via update loop.
Implement sprinting in a Godot 4 third-person shooter by adding a sprint state, sprint jump and sprint fall, adjust sprint_speed, and coordinate transitions from idle and run with camera updates.
Emit sprint started and sprint ended signals to adjust the FOV. Hook these signals in the camera script to trigger enter sprint and exit sprint.
Explore how to implement sprint duration in Godot 4 using a state machine, with sprint remaining, delta time, and a replenish sprint function to manage stamina.
Add a sprint recharge delay to prevent infinite sprint, using a sprint recharge delay remaining variable updated in the replenish sprint function.
In Godot 4, create an aim state for a third-person shooter by adding aim idle and aim walk, using a state machine to control inputs, camera signals, and aim speed.
Refactor movement in Godot 4 third person shooter by introducing a movement stats resource to centralize gravity, jump, and sprint calculations, exposing parameters via the state machine.
Refactor and streamline the Godot 4 motion system by replacing hard constants with flexible player movement stats, recalculating gravity, jump velocity, and sprint dynamics for responsive, on-the-fly adjustments.
Fix a rotation issue in Godot 4's third-person shooter controller by removing a problematic animation track in the FBX, so the character rotates with the mouse and follows the camera.
Create a character model and implement an animation tree with a blend tree and transitions to blend idle, walk, run, and fall idle animations, with crossfade times and signals.
Drive a Godot 4 third person shooter controller by signaling the state machine to the animation controller, emitting animation state changes to the character model via the animation tree.
Learn to prevent the character from rotating with the camera in Godot 4 by emitting a mouse rotated signal, storing rotation as a vector two, and applying a y-axis counter-rotation.
Learn to rotate a Godot 4 third-person shooter character from input direction, align the armature with the camera, and apply smoothing with lerp and a turn rate for responsive movement.
Learn to detect the ground with a floor raycast in Godot 4, enabling early transitions between run and idle animations and reliable ground sensing through collision layers.
Add an on_enter_animation variable and override enter to apply requested animation when present, replacing per-state animations (idle, run, jump, aim idle, aim walk, sprint) while preserving the base enter call.
Review the quick video detailing the major refactor from character model to animation controller. Learn how to update references, rename variables, and reconnect signals using search, replace, and testing techniques.
Extend a Godot 4 third-person shooter controller by adding an armed movement layer, establishing combat transitions, and building blend spaces for walk and run with top and bottom body separation.
Create and manage nested state machines for armed and unarmed play, using a parent state machine, combat transition state, and signals to drive the animation controller in Godot 4.
Leverage a combat status enum in Godot 4 to manage transitions between non-combat and combat states, align animation tree states to prevent input errors, and support a third-person shooter controller.
Explains using a 2d blend space and blend position to update walk and run blends via the animation tree, adapting to combat and non-combat states with camera-driven model rotation.
Attach weapons to the character using a bone attachment 3D node tied to the right hand, adjust its position, and prepare for IK-driven weapon control in the next episode.
Create a weapon resource in Godot 4 to store name, hand position, and hand rotation using export variables; load rifle and pistol via a weapon manager and apply their data.
Split the upper and lower body to blend pistol idle with movement, then add weapon idle, shoot, and reload one-shot animations via spine filters and export variables for weapon swaps.
Create a weapon manager to swap idle, shoot, and reload animations by exporting animation references in the weapon resource, using pistol and rifle res files.
Link combat status to the weapon manager to spawn the first weapon, set the right hand position and rotation, and drive idle, shoot, and reload animations through the animation tree.
export a weapon model variable as a packed scene, attach it to the right hand by instantiating the scene, and remove it on non-combat.
In Godot 4, this lecture teaches implementing weapon swapping for a third-person shooter via weapon manager, input actions, current weapon index logic, and changing weapons with bounds checks and signals.
Refactor the architecture to move combat status handling from the state machine to the weapon manager, and introduce weapon manager started and finished signals to coordinate with the character model.
Add a change weapon one-shot in the animation tree, update weapon load and attach/detach timing, and adjust fade in/out for a smooth, in-game weapon swap.
Set up a weapon manager delay in Godot 4 to prevent rapid weapon changes using an available/unavailable status and a timer linked to change, reload, and shoot animations.
Fine-tune the weapon manager to initialize the current weapon, manage change timings, and drive the change weapon animation via the animation tree, including attachment removal and fade-out.
Learn to implement shoot and reload mechanics in Godot 4 by wiring the weapon manager to inputs, triggering one-shot animations via signals, and preparing for projectiles and ammo tracking.
Fix a start-of-game weapon animation bug in Godot 4 by guarding the weapon manager finished signal with a status check to avoid hiding the weapon at startup.
Set up weapon scenes in Godot 4 with a bullet spawn point marker, apply materials, and integrate textures and normal maps to enable projectile and hitscan visuals.
Introduce an ammo resource tied to the weapon resource, enabling pickup, current and reserve ammo, and multiple ammo types to plan for future projectiles.
Set up a bottom-right ammo UI in Godot 4 using a canvas layer and an HBox with current ammo, a slash, and reserve ammo; update via weapon manager signals.
Implement ammo management for a third-person shooter: check current ammo, fire when available, subtract ammo, trigger reload, and define a calculate reload function to move ammo from reserve.
Create a modular projectile system in Godot 4 by implementing a 3D projectile script and a camera raycast, using the weapon manager to spawn and aim via viewport-based calculations.
Set up a rigid body projectile by exporting velocity and expiry time, instantiate a bullet from a packed scene, and launch it in the direction of the camera raycast.
Instantiate the weapon model in Godot 4 when changing weapons, update the current weapon and model, and spawn projectiles from ammo while syncing with the animation controller.
Create a centered reticle in Godot 4 for a third-person shooter using a center container and a small 5x5 color rect. Keep it centered to guide bullets and adjust anchors.
Mark the rifle as auto fire in the weapon resource and use a callable with call deferred to shoot automatically while the input is pressed.
Create a basic enemy with a hitbox and damage system in Godot 4, linking a rigid body bullet to an area 3D hitbox that signals damage and handles health.
Learn how to implement a bullet expiry system in Godot 4 to despawn bullets after a timeout, connecting a timer in the set weapon projectile function.
Create ammo pickups for a godot 4 third-person shooter by building rifle and pistol ammo scenes, attaching an ammo pickup script, and placing them in the world.
In Godot 4, detect ammo pickups with a 3D area and ammo detected signal, then add ammo to weapons’ reserve ammo by matching ammo types.
Limit each weapon's ammo with a max ammo clips cap, enforce it in the ammo detector, and optionally override the limit using an override flag.
Fix ammo pickups by tracking ammo taken, avoiding array size changes during iteration, and resizing only after depletion, while noting that mixing ammo types can fail.
Add weapon pickups in godot 4 by creating pistol and rifle pickups with rigid bodies, collision shapes, and ammo arrays; implement a weapon manager to handle pickups and ammo.
Learn to implement weapon drops in Godot 4, integrating the weapon manager with the state machine, adding a drop input, and spawning weapon pickups with ammo.
Fix the weapon drop animations by conditionally skipping the shoulder reach when the weapon array is empty, and ensure ammo, reserve ammo, and pickups stay in sync, including ui updates.
This lecture shows a quick fix in Godot 4 for a third-person shooter controller by overriding the state change to prevent arming when no weapons exist, enabling safe drops.
Track the evolution from Godot 4.3/4.4 to 4.6 and learn how new Ike nodes replace deprecated ones for aiming, with three hand Ike variants and UI changes.
Godot 4: implement spine rotation for a third-person shooter by adding spine and head markers, configuring ik modifiers, and toggling ik influence in combat.
In Godot 4, learn to control ik by rotating the spine marker with mouse input, responding to camera rotated signals, and exporting a spine offset to maintain alignment.
Position the right arm with two 3D bone IK nodes and neck/shoulder markers to align the weapon for reliable aiming, and toggle IK on during combat.
Apply left arm ik to align the pistol with the left hand, using a right hand attachment, two bone ik, and markers with a copy transform setup.
Animate IK positions for pistol and rifle poses in Godot 4's shooter controller, deactivate IK on weapon change, and key hand and shoulder markers in the animation tree for transitions.
Have you ever wanted to make a third person shooter in Godot?
It can be challenging to know how to get the actions to work smoothly with a control rig. A careful structure must be created to ensure that the animations do not cut of jump between each other.
This Course will show you how to make a third person controller in Godot from scratch. We’ll go from blank canvas, to capsule, to full control rig and finally a weapon controller. I will show you how and explain why I am making the decision I’m making. Because when you’re making such a complicated controller there isn’t one right way to do it. So I will tell you what I’m doing it and why, occasionally talk about alternatives and then we can move on. Nothing is skipped. Aside from collecting animations, I have included every single decision I made along the way.
NEW: Inverse Kinematics Updated for Godot 4.6
We will create:
A Camera Controller.
Using Spring Arms, we will be able to rotate around our character, without clipping into walls.
Using Tweens, we will be able to switch which side we view the character from.
Using Tweens, we will be able to Zoom the camera to better aim our weapons.
We will also make sure all of these actions can happen smoothly.
A Node Based Finite State Machine.
We Will Create a State machine which will ensure our actions are clearly defined and have clear rules about what can be triggered and when.
We have a state machine for both Combat and Non combat enabling you to design dynamic play modes depending on your desires.
A Full Third Person Character Rig and Animations.
Using Blender and Mixamo we will create a rig with a complex set of animations.
We will discuss importing a rig into Godot.
How to use the Animation Tree Player.
Create a complex set of transitions and blends to ensure that each is smooth and seamless.
A Weapon Manager.
Create a dynamic weapon manger.
using classes and components create a system that will allow a diverse number of different weapons and projectiles.
Picking up Ammo and Weapons.
Dropping Weapons.
We Will also cover Inverse Kinematics
Updated For Godot 4.6
Ensure the player is always looking down camera
Adjust the weapon position to better suit the character pose
Make sure the left hand is always on the weapon
Thank you for checking out this course and I look forward to seeing work through this project and creating an amazing game.