
Get set up in Unity to build a 3D platformer with C#, join the Discord community for feedback, and reference the completed project or YouTube tutorials for further learning.
Set up a new Unity project for the course by configuring the layout, enabling Full HD view, installing the universal render pipeline, and importing assets.
Set up a Unity scene for a 3d platformer test area with a camera and light, build ground, add a smaller player model, and apply grass and water materials.
Learn to implement a basic 3D player movement in Unity by creating a player controller script, reading input axes, and applying frame-rate independent motion with time delta time.
Learn to implement collisions with a capsule collider and the character controller, moving with Move using input axes and delta time, and compare with rigidbody approaches.
Move the player relative to the camera’s direction by using the camera’s forward vector and horizontal input, zero the y movement, and normalize for consistent speed as the camera rotates.
Apply gravity each fixed frame via FixedUpdate and Physics.gravity, keep vertical movement, scale horizontal movement by Time.fixedDeltaTime, and use isGrounded to prevent sinking on the ground.
Learn to implement jump with a jump force and gravity scale in a Unity 3D platformer, using get button down and input mappings, and apply gravity in fixed update.
Turn a 3d platformer character to face movement by using a rotate speed, checking movement magnitude, and applying quaternion rotation with look rotation and slerp for smooth, directional turning.
Build player animation in Unity by wiring an animator controller, exposing speed and grounded parameters, and driving transitions between idle, run, and jump states from the player controller.
Learn to make the camera follow the player with a stored offset, using Vector3.Lerp and a move speed for a smooth slide into position and preserved distance.
Clamp the camera’s vertical position to keep it above the water when the player falls, ensuring the camera follows the player without revealing empty space beneath the surface.
Lock the mouse cursor in a Unity 3D platformer by setting cursor lock mode to locked in the camera controller, switching between none, confined, and locked.
Enhance shadows by adjusting the Universal Render Pipeline: limit max shadow distance, enable cascaded shadows for near detail, and balance resolution to maintain performance.
Create jump and landing dust in Unity by attaching a particle system to the player, using mesh spheres, a smoke material, bursts, and size over lifetime in world space.
Learn to create a kill zone that respawns the player upon entering water, using a trigger collider and the character controller to move to a position above ground via vector3.up.
Implement robust respawning with Unity coroutines by delegating death handling to a singleton level manager, introducing a delayed respawn after death.
Deactivate the player on kill, wait one second, and respawn at the starting position plus one unit up; cache the player reference to avoid expensive searches.
Explore implementing a fade to black using a Unity UI canvas and image, controlled by a UI controller script that fades on death and respawn, with alpha transitions using moveTowards.
Learn to fix camera twitch during respawn by adding a camera snap function that immediately moves to the player's position with an offset, replacing gradual follow via the level manager.
Reuse the end-post asset to create checkpoints in a Unity 3D platformer, using an empty checkpoint object and a trigger sphere to set the level manager's respawn point.
Use Unity's animation system to create idle, activating, active, and deactivating states for the checkpoint sign with scale and rotation, controlled by an active boolean parameter.
Learn to manage multiple checkpoints in Unity by finding checkpoints, storing them in an array, and using a for each loop to deactivate others and activate the current one.
Set up spikes as a trigger collider to damage the player, and implement a player health controller with a singleton instance and a public damage player method.
Implement a health system that tracks current and max health, initializes and refills on respawn, applies damage by decrementing health, and signals the level manager when health reaches zero.
Implement a temporary invincibility window after damage with an invincibility length and a countdown that updates with delta time in the update loop, preventing repeated damage.
Learn to implement a visible invincibility flash in Unity by toggling individual player model pieces via a model display array, using a flash counter and invincibility timer in C#.
Lay out a health UI in Unity by adding a TextMesh Pro health text and a slider-based health bar, anchored to the top-left with an outline and green-to-red fill.
Add a level timer to the user interface and wire it to a level manager to count elapsed seconds using delta time, updating the time text with proper string formatting.
Create a coin collectible in a Unity 3D platformer, using on trigger enter to destroy the coin and update the level manager and UI coin text.
Learn to enhance coin collection in a 3d platformer by adding a spinning coin animation, optional hovering, and a particle pickup effect that spawns on collect and self-destructs.
Add crystal collectibles alongside coins in a Unity 3D platformer, enabling crystals to unlock levels, update crystal UI, and feature a crystal pickup with a custom material and shader.
Learn to save coins and crystals across sessions using Unity's player prefs, and manage awake vs start initialization to unlock levels and update the UI reliably.
Learn how to give crystals a per-level unique id by pairing the scene name with a crystal id, store a collected flag, and deactivate crystals after collection.
Discover how to reset game progress for testing by clearing crystals and coins with a C key, and how to use editor-only code to keep crystals active during development.
Create and place an enemy in Unity, set up patrol points, and program the enemy to move between points, chase the player, and interact by dealing and taking damage.
Learn how to make a Unity 3D platformer enemy move with a C# enemy controller, using patrol points, a rigidbody, and gravity-aware movement.
Move the enemy between patrol points in Unity by testing distance to the current patrol point, then increment to the next point and loop back at the array end.
Demonstrates how an enemy turns toward its movement by looking at patrol points, optionally toward the player, while ignoring the y axis and using slerp rotation for smooth turning.
Implement smoke trails for the enemy by adding a particle system, tuning sphere particles, materials, and lifetime to create continuous, world-space trails that integrate the robot into the game world.
Learn to implement enemy behavior with states using a public enum (idle, patrolling, chasing, returning), switch logic, and random wait times to create dynamic patrols.
Implement enemy chase behavior by detecting when the player is within chase distance, move toward the player at chase speed, and use lose distance and wait-before-returning to resume patrolling.
Explore adding personality to enemies in a Unity and C# 3D platformer by triggering a jump and chase with a vertical impulse, controlled by an air force and chase timer.
Define enemy damage by using on collision enter and stay with the player tag, call the health controller, pause movement briefly, and spin a buzz saw blade for damage feedback.
Enable the player to damage enemies by landing on their heads, triggering a timed death with squash animation and death particles, and add a bounce when the player jumps.
Open the UI canvas in a two-dimensional view, create a full-screen semi-transparent pause screen, and configure a title with buttons: resume, level select, and main menu as a reusable prefab.
Make the pause menu functional by toggling it with the escape key, pausing time, unlocking the cursor, and wiring resume, main menu, and level select buttons via scene management.
Reset Unity time scale before loading a new scene to prevent freezes when pausing and navigating menus and levels.
Create a Unity main menu with a canvas and text mesh pro title, buttons for continue, new game, and quit, load the first level, and reset player data.
Enhance the main menu with a water prefab and level bits to form island scene; add a grass plane and adjust the camera and horizon gradient for a vibrant sky.
Learn how to create and program your very own 3D Platformer 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:
Full 3D Character Movement
Animating Characters
State-based Enemy AI
Fully-featured Boss Battles
Complete Health System
Interactive Menus
Collectables
Level Select Over-world
Game Progression & Storing Your Progress
The course also includes a downloadable, 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 Unity game developer and make something awesome!