
In this video (objectives)…
Let’s get this course started!
In this video (objectives)…
We start with installing Unity and VS Code. If you have them installed already you can jump to the next lecture.
In this video (objectives)…
This is our first look at Unity as we play around with the interface and create some game objects.
In this video (objectives)…
We want to make sure our VS Code editor is set up as we want and connected to Unity.
In this video (objectives)…
Where to go for help, who to ask, how to connect with other folks in the GameDev.tv community.
In this video (objectives)…
For many of our projects we provide access to the code. In this lecture we explain how to access those projects.
In this video (objectives)…
First look at this section's project - a simple sandbox where we make obstacles for the player to avoid and in the process learn C# and some basic Unity.
In this video (objectives)…
We start the process of making our player move by using transform.Translate() to move on the x axis. We illustrate the difference between Start() and Update().
In this video (objectives)…
We discuss the concept of variables and look at the structure of creating a new variable.
In this video (objectives)…
SerializeField is an important part of game development as it gives us more control over tuning our game.
In this video (objectives)…
In this lecture we look at some basic rules of engagement with writing c# code.
In this video (objectives)…
We’ll be using a simple paradigm for controlling our character in this project which will involve using Input.GetAxis().
In this video (objectives)…
In this lecture we discuss how Time.deltaTime is used to make our project frame rate independent.
In this video (objectives)…
In this lecture we set up Cinemachine so that we have a follow camera for our game.
In this video (objectives)…
Collision are a key part of making games so in this lecture we’ll get started with using collisions.
In this video (objectives)…
This is a theory lecture where we discuss what methods are and how to use them.
In this video (objectives)…
Taking the theory from the previous lecture we’ll be implementing some methods in our project.
In this video (objectives)…
In this lecture we explore how to use OnCollisionEnter to make something happen in our game when things bump into each other.
In this video (objectives)…
This lecture shows us how to use GetComponent to access and change the values on our game object.
In this video (objectives)…
In this lecture we create a score and have it increase by 1 when we bump into things.
In this video (objectives)…
Time.time is a way to know how long has transpired in our game. In this lecture we get started with using Time.time.
In this video (objectives)…
This lecture introduces the very important if Statement.
In this video (objectives)…
In this lecture we cache a reference to our game object’s components.
In this video (objectives)…
Next up we set up some tags so that we can distinguish game objects from each other.
In this video (objectives)…
In this lecture we create another tool for our sandbox - rotating obstacles.
In this video (objectives)…
In this lecture we use MoveTowards() to move an object towards our player.
In this video (objectives)…
Next up we practice an important aspect of game development - destroying the game objects we no longer need.
In this video (objectives)…
Trigger volumes are super useful in games so in this lecture we set up our first trigger volume.
In this video (objectives)…
In this lecture we discuss prefabs, how to use them and what are some general principles.
In this video (objectives)…
In this lecture we fix an issue and in the process discuss the Unity Order of Execution to understand why we sometimes need to use Awake() instead of Start().
In this video (objectives)…
We’re starting to pull it all together so in this lecture we’ll create a simple level layout for our player.
In this video (objectives)…
Next up we tidy up our hazards so that they can be used multiple times and place them in our level.
In this video (objectives)…
Instructor hangout section wrap up.
In this video (objectives)…
Rocket Boost is a revamped section based on one of our community's favourite projects. We'll be increasing our C# and Unity knowledge and building a fun, highly customisable rocket game.
In this video (objectives)…
In this lecture we import the basic assets we’ll need in this project.
In this video (objectives)…
Next up we’ll discuss namespaces and classes and how they are used to organise our code.
In this video (objectives)…
In this project we’ll be using Unity’s new input system and this will be the first part of getting that set up.
In this video (objectives)…
In this lecture we’ll discuss using force to push our player around on the screen.
In this video (objectives)…
Just like with our rocket’s thrust, we need a way to read the controls that the player is using for rotation.
In this video (objectives)…
In this lecture we’ll take the rotation input and make our player’s rocket rotate right or left depending upon input.
In this video (objectives)…
In this lecture we’ll set up a simple cinemachine follow camera and play around with some of the settings.
In this video (objectives)…
The Rigidbody is what Unity uses to apply physics forces to, so we need to do some tuning of the Rigidbody in this lecture.
In this video (objectives)…
Let’s discuss audio. In this lecture we talk about the 3 main aspects of audio - the audio clip, audio source and audio listener.
In this video (objectives)…
It’s time to play some audio in our game.
In this video (objectives)…
In this lecture we learn about switch statements and how we can use them as an alternative to if statements.
In this video (objectives)…
Next we’ll learn a very important aspect of game development which is using scene management to load scenes.
In this video (objectives)…
There is some simple but useful code we can implement to load from one scene to the next.
In this video (objectives)…
Invoke allows us to call a method and add a delay - we practice using Invoke in this lecture.
In this video (objectives)…
In this quick lecture we look at how we organise our code within our script - what comes first, second and so on.
In this video (objectives)…
Up until now we’ve been triggering one audio clip in our audio source, but in this lecture we implement 3 different audio clips for our rocket.
In this video (objectives)…
Bools are very useful variables - in this lecture we practice using bools in combination with if statements.
In this video (objectives)…
In this lecture we discuss particles, what they are and how to modify them.
In this video (objectives)…
Triggering particles is a simple process, so in this lecture we’ll trigger some booster particles.
In this video (objectives)…
Refactoring our code might not be glamorous, but its an important habit to get into.
In this video (objectives)…
We can add some simple code that let’s us skip through our levels and turn off collision.
In this video (objectives)…
We need to take a moment to add colliders to the assets we’ll be using in our game.
In this video (objectives)…
Our levels are looking pretty basic so let’s do something a bit more interesting.
In this video (objectives)…
Let’s make our game feel a bit nicer by taking a moment to tune our gameplay.
In this video (objectives)…
An interesting environment makes for a more immersive experience for the player, so let’s discuss set dressing your levels.
In this video (objectives)…
Post Processing is a quick and easy way to make your game look a little nicer.
In this video (objectives)…
In this lecture we discuss how to add and modify lights in your scene.
In this video (objectives)…
Prefabbing is a good habit to get into and sometimes is good to feel the pain of not prefabbing your objects.
In this video (objectives)…
Let’s make an object move by creating an oscillator script.
In this video (objectives)…
It’s really important to give the player a way to exit your game, so let’s use a simple method to quite the application.
In this video (objectives)…
Using the “moments” philosophy is an easy way to go about designing your levels and gameplay.
In this video (objectives)…
It’s time to build your game so you can share it with other people.
In this video (objectives)…
Instructor hangout section wrap up.
In this video (objectives)…
In this section we’ll going over creating a rail shooter game. Featuring Unity terrain, timeline, camera stacking, and much more along the way to continue building your Unity foundation and fundamentals.
In this video (objectives)…
Create a new project and explore some of the basic Terrain tools we’ll be using in this project.
In this video (objectives)…
The Terrain Tools Unity package is a separate package to install using the asset store. We'll be setting it up and giving ourselves more terrain options.
In this video (objectives)…
Let's bring our terrain to life with some colours by adding textures.
In this video (objectives)…
The key mechanism we use to drive around our player on the rail is Timeline. In this video we get that structure set up.
In this video (objectives)…
Taking advantage of the curves tab inside our animation window we’ll give us another method to manage our Timeline animations.
In this video (objectives)…
Add an additional Activation Track to our Timeline and our our first enemy ship movement.
In this video (objectives)…
Create our first Action map and learn how to gain access to it through broadcasting messages to a C# script.
In this video (objectives)…
Using our input values, let’s get our ship moving up, down, left, and right.
In this video (objectives)…
Use a Unity method, Mathf.Clamp(), to restrict our Player Ship movement from getting too far off screen.
In this video (objectives)…
Introduce a bit of rotation to our ship with a more clear understanding of Roll, Pitch, & Yaw.
In this video (objectives)…
Using Lerp we can linearly interpolate our ships rotation to give us a nice smoothing effect.
In this video (objectives)…
Using what we’ve learning about lerp and rotations, let’s implement something similar for our player ship’s pitch rotation.
In this video (objectives)…
Set up a laser system coming from our Player Ship using Unity’s Particle System component.
In this video (objectives)…
Use our Input Action Map to rig up our Player Ship’s laser to only fire when using our input button of choice.
In this video (objectives)…
Using a combination of arrays and a foreach loop, implement a duel laser system for our space ship.
In this video (objectives)…
Create a UI Canvas to incorporate a crosshair image that properly follows our mouse cursor.
In this video (objectives)…
Use ScreenToWorldPoint to get our target point for our lasers set up properly and situated in world space.
In this video (objectives)…
Aim our two laser particle systems towards the direction we’re aiming.
In this video (objectives)…
Rig up the basic collision of our player ship to make sure it can interact with other game objects in our scene.
In this video (objectives)…
Use OnParticleCollision so our laser particle system properly interacts with enemy ships.
In this video (objectives)…
Learn how to instantiate new objects into our scene while the game is running.
In this video (objectives)…
Rig up a couple different types of explosion particle effects taking advantage of Unitys Prefab Variants.
In this video (objectives)…
Create a few different enemy ship prefab variants all with their unique models and collider values.
In this video (objectives)…
Take some time to tune and tweak your settings before moving on to make sure we’ve got a nice baseline to work with.
In this video (objectives)…
Implement a different hit point value to each one of our enemy ships.
In this video (objectives)…
Update our score from one class to another using public methods.
In this video (objectives)…
Update our UI Canvas to properly display our player’s score.
In this video (objectives)…
Create reusable enemy wave prefabs using control tracks on our Master Timeline
In this video (objectives)…
Add some audio dialogue tracks to our Timeline.
In this video (objectives)…
Use Timeline Signals to properly get our text displaying on our Canvas.
In this video (objectives)…
Create portrait cameras to be displayed on our Overlay Canvas using render textures.
In this video (objectives)…
Use the terrain tool features to paint on trees directly to our terrain.
In this video (objectives)…
Configure some project settings to modify the overall look and aesthetic of our game.
In this video (objectives)…
Modify our scene’s skybox and explore some different options in the Unity editor.
In this video (objectives)…
Get the overall visuals of our game looking a bit more juiced up using post processing.
In this video (objectives)…
Introduce different post processing overrides to our different cameras using layers.
In this video (objectives)…
Reload our level after our player ship is destroyed introducing Coroutines.
In this video (objectives)…
Using a basic Singleton pattern, make sure our music persists when our scene reloads.
In this video (objectives)…
Fill out the rest of the content for your game now that all mechanics and systems have been built.
In this video (objectives)…
Instructor hangout section wrap up.
In this video (objectives)…
Royal Run is an endless runner with physics based obstacles. We’ll dive into more in depth C# concepts while exploring new Unity concepts and features.
In this video (objectives)…
Set up a new project so we have a nice clean slate to work with and import a unity package file full of GameDev.tv assets we can use.
In this video (objectives)…
Take our first steps towards getting our level properly generated using a for loop.
In this video (objectives)…
Move each individual chunk prefab back towards are player using Translate and for loops.
In this video (objectives)…
Dynamically change our chunks collection using lists to properly add and remove elements.
In this video (objectives)…
Use a RigidBody component to move our player using a custom input Action Map asset.
In this video (objectives)…
Clamp our movement for both our x and z movement.
In this video (objectives)…
Instantiate our first obstacles into our game using a a new type of loop, a while loop.
In this video (objectives)…
Modify our Rigidbody properties in combination with custom physics materials to get our obstacles properly bouncing down our level in chaotic fashion.
In this video (objectives)…
Create a few different obstacle prefab variants in our project to add some variety and randomness to our game.
In this video (objectives)…
Instantiate a fence hazard on each individual chunk that’s moving on our bridge.
In this video (objectives)…
Spawn potential multiple fences inside each chunk while making sure they’re never spawning in the same lane.
In this video (objectives)…
Occasionally spawn in some apple and coin pickups on each individual chunk making sure they never occupy the same lane.
In this video (objectives)…
Create the ground work for collision handling with a better understanding of how rigidbody’s interact with different colliders.
In this video (objectives)…
Destroy unwanted obstacles that fall off our bridge with a trigger volume to keep our clean tidy and clean.
In this video (objectives)…
Rig up a Mixamo animation for when our player gets hit by an obstacle or fence.
In this video (objectives)…
Update our Player Collision class so that we trigger our animation when our player runs into any obstacle.
In this video (objectives)…
Examine a basic use case for inheritance for our two different coin and apple pickups.
In this video (objectives)…
Speed up or slow down our level appropriately depending on if we pick up an apple or hit an obstacle.
In this video (objectives)…
Lerp our Cineamachine camera’s field of fiew either zooming in or out when we slow down or speed up.
In this video (objectives)…
Create a custom speed up particle system effect we can fire when our player speeds up after eating an apple power up.
In this video (objectives)…
We had add some nice header and tooltip attributes to our inspector to keep things organized and clean.
In this video (objectives)…
Increase our score by 100 every time we pick up a coin and display on a UI Canvas.
Pass through necessary references into our Coin and Apple classes.
In this video (objectives)…
Create a slow-mo Game Over effect for our player when we run out of time.
In this video (objectives)…
Introduce a class member referred to as a property to easily get our game over boolean value from other classes.
In this video (objectives)…
Randomize the type of chunk prefab we’re instantiating while learning about the C# modulus operator.
In this video (objectives)…
Increase our game’s timer by an increment we decide, every time our player reaches a checkpoint.
In this video (objectives)…
Spruce up your checkpoint in a fun and unique way!
In this video (objectives)…
Modify the overall visuals of our game modifying both post processing and lighting settings in our project.
In this video (objectives)…
Add a point light and emissive material to each individual lamppost light on our bridge.
In this video (objectives)…
Use our Cinemachine composer properties to give some subtle and smooth camera movement to our game.
In this video (objectives)…
Create a fog Particle System on our bridge to add to the overall aesthetic of our game and hide the obstacles being spawned in.
In this video (objectives)…
Using our Cinemachine camera, shake our screen when a giant rock comes crashing down our bridge.
In this video (objectives)…
Create an audio sfx and a particle system vfx for when our rock collides with other objects.
In this video (objectives)…
Add some music to our game as well as tack on some subtle noise to our camera.
In this video (objectives)…
Make the final changes on our game to balance things out with all mechanics and systems in place.
In this video (objectives)…
Instructor hangout section wrap up.
In this video (objectives)…
The Sharp Shooter section builds a basic FPS style game. Let’s bring together a lot of what we’ve learned so far while continuing to build on your Unity and C# foundation.
In this video (objectives)…
Get a new project up and running with the Unity Technolgies First Person Controller Starter Asset.
In this video (objectives)…
Create a Nav Mesh Surface and a Nav Mesh Agent that can properly move on a designated nav mesh to chase the player.
In this video (objectives)…
Explore our Nav Mesh Agent’s jump and drop height on our playground level.
In this video (objectives)…
Prep our player to get ready for shooting with both a gun and crosshair.
In this video (objectives)…
Fire off a rayccast from our camera off into the distance towards the center of our screen to get the direction we’re aiming.
In this video (objectives)…
Modify the Starter Assets Input system to only fire off a raycast from our gun when we click the proper input binding.
In this video (objectives)…
Using our new found raycast knowledge, destroy our enemy robots when they take three damage from our pistol.
In this video (objectives)…
Create a muzzle flash for our weapon.
In this video (objectives)…
Use the Animator and Animation tabs to create a simple kickback animation for our weapon.
In this video (objectives)…
Create a hit vfx particle system for where our raycast hit point intersects with a collider.
In this video (objectives)…
Put together a custom idle animation for our floating robot using the animator.
In this video (objectives)…
Introduce the ProBuilder tool and see how we can modify a meshes vertices, faces, and edges.
In this video (objectives)…
Continue on our ProBuilder journey building out a basic greyboxing blockout for a potential level.
In this video (objectives)…
Finish off your ProBuilder Introduction with a few more tips and tricks to get you off on the right foot and create your own level.
In this video (objectives)…
Prep our new scene implementing current features & mechanics before moving on to new ones.
In this video (objectives)…
Introduce a new derived class, the scriptable object, as an alternative way to store data.
In this video (objectives)…
Refactor some of our code and setup a way for each individual gun to have it’s own fire rate cooldown.
In this video (objectives)…
Create an automatic machine gun mechanic managaging a scriptable object bool and an interaction behavior our our Shoot input.
In this video (objectives)…
Create a pickup mechanic so we can properly transfer over our scriptable object data from class to class.
In this video (objectives)…
Properly swap back and forth using either weapon after being picked up by the player.
In this video (objectives)…
Start the functionality for our Sniper Rifle being able to zoom in and out rigging up our input to do so.
In this video (objectives)…
Modify our Cinemachine Camera’s field of view to the zoom in and out effect we’re looking for.
In this video (objectives)…
Create a base Pickup class using inheritance for both or current weapon pickup and soon to be ammo pickup
In this video (objectives)…
Use a layermask and trigger overloads to our Raycast method so we are able to shoot through our pickups.
In this video (objectives)…
Create an ammo and magazine size mechanic for our current weapon.
In this video (objectives)…
Create an ammo pickup mechanic extending from our base Pickup class.
In this video (objectives)…
Use camera stacking to solve the issue we’re having with our gun clipping through walls.
In this video (objectives)…
Let’s add a little bit of screenshake each time we fire our gun using our Cinemachine Camera.
In this video (objectives)…
Create an explosion particle system for when an enemy is destroyed.
In this video (objectives)…
Create an explosion radius we can use for detecting if the player is in range of our robot explosion.
In this video (objectives)…
Use Physics.OverlapSphere to cast an explosion from our visual vfx and deal damage to our player if it’s within the explosion radius.
In this video (objectives)…
Create a camera transition when our player is destroyed using our Cinemachine Virtual Camera’s.
In this video (objectives)…
Update our UI to properly reflect our player’s current health changes.
Use a coroutine to infinitely spawn enemy robots while our player is alive.
In this video (objectives)…
Get a turret pointing towards the player and shooting projectiles using Transform.LookAt()
In this video (objectives)…
Shoot the turret projectile towards the player using it’s own rigidbody.
In this video (objectives)…
Create a game over UI using a custom font of your choice.
In this video (objectives)…
Learn about a new operator in C# referred to as the ternary operator for writing condensed and short handed if-statements.
In this video (objectives)…
Use the Event System component to properly interact with our UI buttons.
In this video (objectives)…
Create a win condition for our player.
In this video (objectives)…
Tune, tweak, & balance our game polishing off some final features.
In this video (objectives)…
Instructor hangout section wrap up.
This course has been updated to Unity 6, but is still compatible with older versions of Unity.
This is the long-awaited sequel to the Complete Unity Developer - one of the most popular e-learning courses on the internet! Completely re-worked from scratch with brand-new projects and our latest teaching techniques. You will benefit from the fact we have already taught over 2 million students programming and game development, many shipping commercial games as a result.
Unity is an incredible 3D package used for making video games, architectural and medical imaging and more. The challenge is that it's big and complicated to use, especially for complete beginners to coding and game development. We make learning to code easy and fun by leading you step-by-step through the process of creating exciting games.
Get plugged into our communities of amazing developers on Facebook (nearly 20k), in our own Teaching Assistant-curated Community, and our student Discord chat channel.
If you're reading this you probably already have everything you need to get started. Unity is a free download. With regular access to an internet connection you'll be able to engage in our thriving community. Even if you have no experience with coding, or with 3D packages, we will guide you through everything from first principles. Starting slow, then building on what you learn, you'll soon have a very solid working knowledge of Unity.
You’ll build five fun games, each teaching you key skills in game development. From the basics like variables and collision detection to more advanced stuff like procedural generation and AI, you’ll master it all - while dodging obstacles and blasting aliens!
Create an 'Obstacle Dodge' game. Learn player input, collisions, variables, and if statements. It's the perfect way to get your feet wet in Unity.
Launch into "Rocket Boost", a physics-based game. Mess around with forces, namespaces, and classes. Push that rocket—and your skills—even further!
Gear up for "Galaxy Strike", an old-school rail shooter. Master Unity's terrain and timeline tools while coding arrays, for-loops, and coroutines. Arcade fun with a modern twist!
Craft a procedural endless runner in 'Royal Run'. Build worlds that never stop, use lists, pickups, animations, post-processing, and more.
Get your eye in on "Sharp Shooter", a first-person shooter. Tackle nav mesh agents, enemy AI, weapon switching, raycasting, and prototyping levels with ProBuilder. Because who doesn't want to make an FPS?
Don't take our word for it, please see the amazing reviews students have taken the time to write. We are proud to be transforming lives, and equipping 1000s of people with valuable new skills. We would love you to become one of them now.
The course is project-based, so you will not just be learning dry programming concepts, but applying them immediately to real indie games as you go. All the project files will be included, as well as additional references and resources - you'll never get stuck. There are "talking heads", powerful diagrams, quality screencasts and more.
For each demo game you build you will follow this process...
Be challenged to build the entire game yourself.
Be shown step-by step how to build it.
Be challenged to apply, and re-apply your knowledge regularly.
Prefer to focus on 2D? Check-out our Complete Unity Developer 2D course. Want something a little more advanced? Check-out our epic Unity RPG course. Want to get certified, get a job, or learn environment art - we've got you covered. The green leaf logo is your sign of quality.
You will get full lifetime access for a single one-off fee. The creators are qualified and experienced coders and avid gamers, so are able to explain complex concepts clearly, as well as entertain along the way.
What this course DOESN'T cover...
Here are some things we will not be covering in detail...
Art asset creation (assets provided but not made on-screen).
Advanced performance optimization.
Editor plugins or modifications.
Physics engine modification.
Anyone who wants to learn to create games: Unity 3D is a fantastic platform which enables you to make production-quality games. Furthermore these games can be created for Windows, MacOS, iOS, Android and Web from a single source!
Dive in now, you won't be disappointed!