
Learn to create a first person shooter in Unity 6 and C sharp, with guidance from James, and access a feedback area, Discord community, and a completed project for reference.
Create a new Unity project with the universal 3D render pipeline, import the provided Unity package assets, and remove unused packages to optimize the setup.
Set up Unity scene with a standard URP setup, ground plane, and directional light. Create a player with the main camera as a child, add objects, and turn off fog.
Learn to move the player in Unity using the CharacterController and a MonoBehaviour script, exposing public references and forward movement with Vector3 to enable basic physics interactions via colliders.
Learn to control player speed in Unity by multiplying movement with time.deltaTime and a moveSpeed variable, ensuring consistent speed across varying frame rates and vsync settings.
Learn to read a vector2 move input with Unity's input system, map it to x and z movement using a move action, and test with logs before smoothing diagonal movement.
learn to move a player in Unity based on the direction they face, using transform.forward and transform.right to combine forward and sideways input for smooth movement.
Implement look input for a first-person player by reading look action from mouse and right stick, store rotation, and apply horizontal rotation using Euler angles with a look speed.
Explore vertical camera control in a Unity first person shooter by rotating the camera on the x axis with quaternion.euler, while preserving player yaw and inverting the y input.
Scale the right-stick input via Unity's input system to 50 on x and y, improving controller responsiveness and feel.
Limit the camera's vertical look in Unity by clamping the Y rotation between -85 and 75 with Mathf.Clamp, preventing upside-down views and preserving normal movement.
Lock the mouse cursor to the game window at startup to keep input focused. Set cursor.lockState to CursorLockMode.Locked in Unity to hide and center the cursor.
Apply gravity to the player's vertical movement using Unity's gravity setting and delta time, enabling falling. Check is grounded to reset vertical speed on the ground and prepare for jumping.
Implement jumping by reading the jump action, setting the player's vertical movement to jump power when pressed, and applying gravity with a gravity modifier for snappier, weightier movement.
Set up a weapons controller in Unity to handle shooting, linking it to the player controller and calling a public shoot function when the attack input is pressed.
Add a muzzle flare to the end of the gun, using an unlit material and a muzzle flash GameObject that activates on shoot and deactivates after a brief display time.
Limit unlimited jumping by requiring both a jump input and a grounded state from the character controller, using a logical and to ensure the jump only when on the ground.
Improve weapon feedback by using an enemy-specific damage effect and tagging enemies, while updating raycast layers to reliably trigger damage on hits.
Implement an enemy chase with a chase range and stop range, so enemies pursue the player within range but stop at close distance and shoot, then create a reusable prefab.
Resolve enemy projectile issues by placing bullets on a projectiles layer to prevent collisions with enemies, and implement a five-second lifetime with delayed destroy to remove bullets from memory.
Display the player's health on the UI canvas by updating a text element in 2d view, using a singleton UI controller to refresh the rounded health value.
Implement a heal method in the player health controller, cap health at max, and create a health pickup with a trigger collider that heals the player on collision.
Implement a functional death screen by wiring a UI controller to show it and unlock the cursor, then restart the level by reloading the active scene.
Learn how to create and program your very own level-based shooting game using Unity, an industry-standard game development program used by 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 understand such game elements as:
A first-person character controller with full movement, jumping & sprinting capabilities
A full weapons system including weapon switching and multiple gun types
Collectibles such as ammo & health
Designing complete levels
Different types of enemies to combat
Managing Audio Systems
Full user Interface with interactive menus
Multiple levels
A Unique Boss Battle
And more...
The course also includes a complete version of the project to use for your own reference to ensure everything in your game works as it should!
Start learning today and let me help you become a game developer!