
Kick off your first-person shooter project in Unity and C# by learning setup basics and accessing course resources, feedback, a completed game version, and extra tutorials.
Explore the Unity interface, including the scene, hierarchy, project, and inspector windows, learn how transforms, cameras, and lights drive your game world, and master basic editing tools.
Create a new scene, save it as the test scene, and import and decompress the unity package by dragging it into the project's assets.
Create an environment object, add a ground plane and cubes, adjust scale and local rotation to form a ramp, then apply blue and green materials and enable auto lighting.
Create a basic player in Unity using a capsule collider, place it at the world origin, and position the camera inside for a first-person view, preparing for movement.
Learn to set up Unity’s character controller, create a player holder, attach a script to drive movement, and handle naming conventions and Visual Studio integration for a first person shooter.
Explore how to build the first player movement script in Unity by defining public variables like move speed, referencing a character controller, and understanding start and update functions.
Learn to move a first-person player by reading horizontal and vertical inputs and applying delta time for consistent movement via a Unity character controller.
Learn to control the first-person camera in Unity by making the camera a child of the player and mapping mouse input to horizontal and vertical rotations.
Configure camera control in Unity by adjusting max sensitivity and inverting x and y axes with boolean toggles, applying changes to input vectors in real time.
Move the player relative to its facing as the camera turns using transform.forward and transform.right, combine vertical and horizontal inputs, and normalize to keep a consistent speed with delta time.
Learn to implement a smooth camera follow in Unity by detaching the camera from the player, following a camera point with a script, and using late update to prevent jitter.
Lock the cursor inside the game window and hide it using a Unity game manager with cursor lock mode set to locked. Escape frees the cursor when needed.
Add gravity to the player by introducing a gravity modifier and updating the y velocity with delta time, using a grounded check to manage fall behavior.
Implement a jump mechanic in Unity using a jump power and spacebar input, applying upward movement only when grounded via a ground check and overlap sphere.
Implement a double jump in a Unity-based first-person shooter by managing ground and can double jump, using spacebar input to apply jump power.
Enable running by adding a run speed and using the left shift key to switch between move speed and run speed, improving player movement in Unity.
Implement movement bobbing for the player by using Unity's Animator system to switch between idle and walk animations based on move speed magnitude, with on ground condition and smooth transitions.
Create an extra running bobbing animation and fluid transitions in Unity using an animator, with ground checks, speed thresholds, and editor-based tweaks.
Create a visible gun attached to the camera in the first person shooter and a blue bullet with a trigger collider, then implement a bullet movement script to detect hits.
Attach a rigidbody to the bullet and, in the update loop, set its velocity to the forward direction multiplied by move speed while disabling gravity for stable projectile motion.
Learn to destroy projectiles on collision using on_trigger_enter and destroy game object, and implement a lifetime countdown with delta time to prevent bullets from lingering.
Learn to fire projectiles in Unity by wiring a fire point and a bullet prefab in the player controller, and instantiate bullets on left click for accurate shooting.
Add a particle system for the laser impact effect, configure its shape, duration, lifetime, speed, and gravity, then attach a trail renderer using the laser material.
Assign bullets to a bullets layer and disable collisions with itself in Unity’s physics matrix. Offset impact effects toward the player using the bullet’s forward direction and delta time.
Create a centered crosshair by adding a UI image to a canvas, scale with screen size at 1920x1080, and ensure an event system for UI in the game view.
Use a recast from the camera center to detect hit points and steer bullets toward that world point. Implement a distance check so shots near walls travel straight ahead.
Create shooting targets in Unity by tagging spheres as enemies. Use on trigger enter to destroy enemy objects when hit by bullets, and add multiple targets for gameplay.
Learn to make moving targets in Unity by animating them and scripting movement and rotation around a center point, using should move and should rotate flags with speeds.
Create an enemy health controller with currentHealth and a public damageEnemy(damageAmount) function that reduces health and destroys the enemy when it reaches zero, with bullets calling it.
Create an enemy controller in Unity with a move speed and rigidbody, make it look at the player via a static player instance, and move forward to chase.
Enable enemy chasing within a chase distance, stop beyond a lose distance, using a chasing flag and a target point with fixed y to look at the player.
Configure a nav mesh area in Unity to guide enemies. Bake navigation after marking objects as navigation static, adjust agent height, slope, and step parameters, producing a blue overlay.
Add a nav mesh agent to the enemy and set its destination to the player's position, remove the rigidbody usage, and enable navigation around blocks and stairs.
Enhance enemy navigation by making enemies chase the player to the last known position, then return to their starting point after a timed delay, while avoiding objects.
Add an enemy gun with fire points, reuse a red bullet prefab for enemies, set damage rules for enemy and player, and test in Unity with debug messages.
Implement enemy firing with a nav mesh agent, remove rigidbody movement, configure a fire cooldown and fire point, and instantiate bullet prefabs during pursuit.
Implement burst firing with a shot wait counter and a shoot time counter to space bullets, count down with delta time, pause movement while firing, increasing angular speed to 360.
Limit enemy fire by checking the player is within a front view angle, rotate the fire point to face the player, and shoot only when within 30 degrees.
Replace the enemy capsule with a canny Kenny character model, parent it to the enemy, position and scale it to 0.5, and remove the fire point cube to prepare movement.
Learn to animate enemies in Unity by creating an enemy animator controller, wiring idle, run, and shoot with isMoving and fireShots triggers, and positioning a fire point for realistic shots.
Learn to implement headshots in Unity by adding a head collider and headshots tag, detecting headshots in the bullet controller, and doubling damage via the enemy health controller.
Create a player health system with a health controller, max and current health, and a damage function that deactivates the player when health reaches zero, plus invincibility to prevent hits.
Create a health UI in Unity by adding a canvas, a slider and health text, customize the fill image, and anchor the UI to the top-left for responsive scaling.
Create a dedicated UI controller to manage health UI in Unity, exposing a singleton instance, linking a health slider and health text, and updating them when the player takes damage.
Create a checkpoint object with a trigger and a checkpoint controller that saves the CP name in the player press system and respawns the player at that checkpoint on load.
Learn to prevent bullets from hitting checkpoints by grouping checkpoints on a dedicated trigger zones layer and disabling bullet-layer interactions in project settings, then test checkpoints in play mode.
Create a health pickup in Unity by designing a ground object, adding a spinning animation, configuring a trigger collider, and implementing healing via on trigger enter that updates the UI.
Set up a modular weapons system with a laser pistol, allowing weapon switching and different bullet types, controlled by per-weapon scripts and a fire shot function.
Add a repeat fire mechanic by exposing a can fire toggle, fire rate, and fire counter; hold the shoot button to auto-fire, with the counter counting down in update.
Add an ammo system by introducing a public int current ammo in the gun script, decrementing it on fire via the player controller, and gating shots when ammo > 0.
Learn to display on-screen ammo in Unity by reusing the health UI approach: create ammo text and icon on the UI canvas and update it as shots fire.
Create an ammo pickup that spins in the world, triggers on player collision, adds weapon-specific ammo amounts, prevents double collection, and updates the ammo UI in real time.
Add and configure multiple weapons, including a laser repeater and sniper, adjust fire rates, ammo, bullets, and visual effects, then implement in-game weapon switching.
Switch between weapons by maintaining a public guns list, tracking the current gun, activating the selected one, and wrapping to the first gun with the tab key in Unity.
Set individual fire points for each weapon, update the gun script, and switch the active fire point when changing guns to fire from the correct muzzle.
Learn to implement aiming down sights in Unity by adjusting the camera field of view with per-weapon zoom and using right-click to smoothly zoom via a camera controller.
Adjust aiming by centering the gun during aim down sights using an ads point, move toward it with a speed, and keep the gun's local position and fire point aligned.
Explore weapon pickups that unlock and switch to new guns by adding a pickup, updating the gun lists, and activating the selected weapon.
Learn to enhance visuals by adding post-processing effects in Unity, using the package manager to install the post processing package, configuring a post process layer, volume, and profile.
Set up a post processing volume and camera layer, then add bloom, motion blur, chromatic aberration, and ambient occlusion to enhance visuals and feel, and mark the volume as global.
Add a muzzle flash at the fire point using a small yellow sphere and a distortion diamond, then flash it for one frame when firing to boost feedback.
Create a red screen flash by overlaying a UI image and adjusting its alpha to a defined damage value. Fade it back out with a fade speed using time.deltaTime.
Create a functional title screen by building a main menu with a UI canvas, skybox background, and play/quiz buttons; configure scene management and build settings to load the first level.
Create a functional pause menu in Unity for a first-person shooter, featuring an overlay, resume and main menu buttons, time scale pause, and unlockable cursor.
Create a Unity victory screen with a canvas, text, and a return button; reveal elements over time with coroutines and fade a black screen before returning to the main menu.
Learn how to create your very own first person shooter game using Unity, an industry-standard program used by many large gaming studios and indie developers across the world.
In this course you won’t just be learning programming concepts, but tying these concepts to real game development uses. You will have access to a course forum where you can discuss the topics covered in the course as well as the next steps to take once the course is complete.
This course has been designed to be easily understandable to everyone, so whether you’re a complete beginner, an artist looking to expand their game development range or a programmer interested in understanding game design, this course will help you gain a greater understanding of development.
At the end of this course you will have developed the ability to create such game elements as:
A first-person character controller with full movement, jumping & double-jumping capabilites
A full weapons system including weapon switching and multiple gun types
Collectibles such as ammo, health & weapons
Designing complete levels
Different types of enemies to combat
Managing Audio Systems
Level Mechanics like bouncepads, portals and more
Full user Interface with interactive menus
Multiple levels
Improving visual quality with post-processing effects
And more...
Start learning today and let me help you become a game developer!