Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Unity Bootcamp: 3D Game Development
Introduction
Unity Bootcamp: 3D Game Development (2:46)
Exercise: Meet Your Classmates and Instructor
ZTM Plugin + Understanding Your Video Player
Course Resources
Set Your Learning Streak Goal
Section 1: Getting Started
What Are We Creating? (2:49)
What is Unity? (1:34)
Installing Unity (6:51)
Section 2: Unity Fundamentals
Creating a New Project (5:29)
Custom Layouts (4:08)
Default Windows Overview (7:29)
Understanding Game Objects (4:48)
Moving Around the Scene (4:42)
Manipulating Game Objects (5:20)
Exercise: Creating a Robot (7:52)
Understanding Component Composition (4:31)
The Transform Component (2:28)
Applying Materials (7:30)
Exercise: Materials (1:44)
Parent and Children Objects (5:42)
Prefabs (7:43)
Final Tips and Tricks (5:19)
Let's Have Some Fun (+ Free Resources)
Section 3: Designing a Scene
Importing Unity Package Files (2:48)
Model File Formats (3:09)
Model Prefabs (4:18)
Installing Packages with the Package Manager (4:16)
Creating a 3D Tilemap (8:55)
Changing the Materials on a Model (2:16)
Extracting Materials from a Model (4:01)
Adding an Offset to a Brush (7:16)
Exercise: Installing the Polybrush Package (1:55)
Painting Models with a Polybrush (8:20)
Custom Icons for Game Objects (7:06)
Exercise: Drawing More Tilemaps (5:21)
Exercise: Adding a Slope (3:08)
Rotating Tiles (3:35)
Exercise: Rotating Corner Tiles (3:21)
Where to Find Game Assets? (2:04)
Unlimited Updates
Section 4: Getting Started with C#
What is C#? (2:57)
Installing Visual Studio Code (4:40)
Configuring Visual Studio Code (3:34)
Creating a C# File (3:13)
Understanding Namespaces (3:05)
Creating a Namespace (4:43)
What are Objects? (2:11)
Creating Classes (3:10)
Understanding Variables (3:33)
Defining Variables (4:47)
Comments (2:47)
Constructor Methods (3:48)
Access Modifiers (4:30)
Inheritance Basics (3:57)
Using Namespaces (1:37)
Adding Classes as Components to Game Objects (3:12)
Custom Methods (4:07)
Parameters (3:41)
Return Values (3:38)
Control Flow (7:02)
Debug Class (7:25)
Generics (7:39)
Attributes (6:01)
Auto Formatting Code (5:24)
Exploring the C# Documentation (2:00)
Course Check-In
Section 5: Player Movement
Installing the Input System Package (3:58)
Understanding Actions and Action Maps (1:42)
Creating Actions and Action Maps (3:53)
Exercise: Creating a UI Action Map (1:52)
Setting the Action Type (5:46)
Adding Bindings (4:41)
Composite Bindings (4:59)
Separation of Concerns (8:35)
Event Handlers (6:17)
Adding a Game Manager (3:16)
Adding the Player Input Component (7:14)
Baking a Navigation Mesh (8:45)
Adjusting the Agent Size (4:23)
Adding Non-Walkable Areas (3:34)
The Navigation Mesh Agent Component (4:47)
Reading the Callback Context (2:46)
Storing the Movement Vector (6:50)
Grabbing a Component (4:46)
Moving an Agent (5:10)
Following the Player with a Camera (8:04)
Framerate Independence (4:46)
Using the Agent Speed (2:24)
Understanding Quaternion (3:47)
Vector Zero (3:02)
Linear Interpolation (4:11)
Component Catching and Organizing Code (3:19)
Exploring the Unity Documentation (3:04)
Implement a New Life System
Section 6: Intermediate C#
Creating Instances (5:25)
Static Modifier (6:05)
Understanding Abstract Classes (3:02)
Using an Abstract Class (4:18)
Using Abstract Classes as Types (2:31)
Base Constructor Methods (3:08)
Section 7: AI Movement
Prefab Variants (5:26)
Requiring Components (4:00)
Creating a Controller (3:33)
Serializing Fields (4:54)
Tags (2:53)
Using Constants (4:26)
Calculating Distance with Vectors (6:27)
Disabling Serialization (2:23)
Custom Gizmos (3:57)
Moving Agents by Destination (6:23)
Introduction to the State Pattern (3:37)
Creating a Base State (4:53)
Setting a Default State (8:29)
Creating a Return State (3:19)
Creating a Chase State (6:19)
Transitioning Between States (6:11)
Exercise: Creating an Attack State (7:29)
Stopping the Agent (3:45)
Section 8: Patrolling with Splines
Creating a Patrol Enemy (4:15)
Installing the Splines Package (1:56)
Adding Knots (6:57)
Adding Curved Knots (4:44)
Closing Knots (2:46)
Serializing Private Fields (5:51)
Moving Enemies to the Path (7:51)
Checking for a Missing Path (3:45)
Creating a Patrol State (1:45)
Verifying an Agent Reaching their Destination (8:39)
Calculating the Next Position (4:56)
Moving the Enemy on the Spline (4:00)
Grabbing the Spline Length (1:48)
Adjusting the Patrol Speed (4:24)
Pausing the Enemy on Patrols (2:37)
Toggling the Enemy's Patrol (4:12)
Extracting Models (3:26)
Section 9: Player & Enemy Stats
What is a Scriptable Object? (1:37)
Creating a Scriptable Object (5:29)
Configuring the Character's Stats (3:36)
Loading Enemy and Player Stats (5:24)
Applying Stats (6:52)
Updating the Speed (3:10)
Section 10: Animation
Updating Character Models (6:07)
Rotating Enemies Toward the Player (3:57)
Rotating Enemies Toward their Return Position (4:32)
Rotating Patrolling Enemies (5:04)
Rotating Enemy to Original Rotation (3:20)
Disabling an Agent's Rotation (1:21)
Adding a Treasure Chest (2:37)
Adding a Nav Mesh Obstacle (1:55)
Creating an Animation Clip (4:52)
Adding Keyframes (4:47)
Understanding the Animator Controller (3:43)
Adding an Idle State (5:41)
Animator Controller Parameters (2:55)
Adding a Box Collider (5:19)
Adding a Rigid Body (1:44)
Listening to Key Presses (5:18)
Updating Parameters on Animator Controllers (4:09)
Applying an Avatar Definition (2:37)
Preparing the Animator Controller (4:21)
Adding a Blend Tree (4:33)
Grabbing Components in Child Objects (1:47)
Checking the Callback Action (3:20)
Updating the Animator Speed (3:31)
Smoothening the Animator Speed (3:17)
Exercise: Using Constants for Animator Parameters (3:09)
Looping Animations from Models (2:07)
Adding Animation to Enemies (4:39)
Updating the Movement Speed of Enemies (4:34)
Custom Clamping (5:24)
Custom Tags (3:17)
Exercise: Imposter Syndrome (2:55)
Section 11: Combat
Trigger Parameters (5:21)
Setting a Trigger (5:47)
Custom Animation Events (3:00)
Bubbling Events (7:27)
Empty Lambda Expressions (2:44)
Capturing Bubbled Events (3:57)
The Event Keyword (4:16)
Preventing the Excessive Attacks (2:24)
Removing Event Handlers (3:14)
Exercise: Custom Hit Bubble Event (4:14)
Understanding Arrays (2:03)
Box Ray Casts (4:50)
Looping through Arrays (4:17)
Refining the Results (3:14)
Reducing Health Points (2:36)
Stopping the Enemies Animation (1:10)
Attacking the Player (2:44)
Looking at the Player (2:06)
Canceling the Attack (2:48)
Adding a Defeat Animation (3:44)
Handling the Player's Defeat (3:28)
Exercise: Tracking a Character's Defeated State (2:28)
Destroying Game Objects (4:45)
Checking the Player is Alive (2:00)
Handling the Enemy's Defeat (7:00)
Section 12: User Interfaces
Creating a Custom Scene (3:29)
Creating a UI Document (7:09)
Using a Visual Element (6:43)
Adding Text (3:38)
Unity Stylesheets (6:13)
Exercise: Extracting Text Styles (2:51)
Custom Fonts (2:12)
Centering Elements (3:37)
Adding Buttons (8:50)
Adding an Image (3:33)
UI Document Game Object (1:34)
Exercise: Binding UI Actions (4:27)
UI Base State (5:56)
Main Menu State (5:52)
Retrieving the Root Visual Element (2:56)
Understanding Lists (2:36)
Querying a List of Buttons (6:01)
Exercise: Handling Interaction Events (5:36)
Handling the Selection (4:03)
UI Navigation (4:34)
Ternary Operator (6:21)
Toggling Classes (4:56)
Scene Transition (7:14)
Creating the Player Info UI (9:53)
Loading the UI in Another Scene (1:17)
Toggling the UI's Display (10:27)
Observer Pattern (3:28)
Creating an Event Manager (4:16)
Null Conditional Operator (2:29)
Sending Data with Events (4:07)
Updating the Health Label (5:21)
Healing the Player (5:35)
Exercise: Updating the Potion Count UI (6:53)
Adding a Canvas (4:22)
Adding the Health Bar Image (7:28)
Slider Component (2:36)
Dynamically Updating the Slider (4:45)
Adding the Health Bar to the Enemy (5:54)
Creating a Billboard (5:58)
Section 13: Dialogue
Installing Ink (3:59)
Writing a Story (6:04)
Exercise: Adding More Knots (2:00)
Adding Multiple Choice (3:22)
Adding the NPC (6:11)
Toggling a Dialogue Icon (8:15)
Handling NPC Interaction (3:38)
Loading a Story (6:10)
Creating the Dialogue UI (9:06)
Dialogue UI State (3:53)
Exercise: Entering the Dialogue State (7:18)
Type Casting (5:28)
Displaying a Story's Text (2:28)
Switching Action Maps (5:26)
Continuing the Story (2:32)
Checking Story Choices (3:46)
Clearing Lists (4:55)
Looping through Lists with the ForEach Method (2:44)
Dynamically Creating Elements (3:07)
Setting the Active Choice (4:04)
Selecting a Choice (3:07)
Exiting the Dialogue (3:03)
Fixing a Few Bugs (4:25)
Section 14: Quests & Rewards
Creating a Quest Item UI (7:59)
Preparing the Quest Item State (3:29)
Exercise: Entering the Quest Item State (4:07)
Using Scriptable Objects for Quest Items (4:59)
Adding Tooltips (2:11)
Updating the UI Label (6:12)
Pausing Enemy Attacks (6:52)
Storing the Quest Item (5:56)
Displaying the Quest Item (4:43)
Configuring the NPC's Quest Item (2:12)
Binding External Functions (4:46)
Passing on the NPC (5:15)
Initiating the Quest Item Verification (1:54)
Checking the Player's Inventory (7:00)
Story Variables and Conditional Statements (5:38)
Manually Diverting Stories (3:46)
Creating a Reward Scriptable Object (2:50)
Understanding Enums (2:51)
Creating an Enum (4:19)
Creating a Reward Component (3:20)
Sending the Reward (7:20)
Applying Rewards (3:41)
Adding the Weapon's Model (2:51)
Setting Active Game Objects (6:46)
Section 15: Scene Management
Creating the Dungeon Scene (7:33)
Finishing the Dungeon Scene (6:12)
Creating a Portal (1:40)
Setting the Spawn Point (2:10)
Detecting the Player with Triggers (4:42)
Teleporting to the Next Scene (5:16)
Section 16: Saving
Adding a Portal Event (6:00)
Understanding PlayerPrefs (3:19)
Using PlayerPrefs (6:38)
Checking for Saved Data (1:54)
Retrieving Saved Data (4:42)
Dynamically Adding a New Button (4:54)
Loading the Correct Scene (1:50)
Deleting PlayerPrefs (2:17)
Warping an Agent (7:06)
Creating Enemy IDs (4:00)
Converting an Array to a List (6:31)
Checking for Defeated Enemies (6:24)
Joining Strings (6:29)
Splitting Strings (6:16)
Fixing the List (4:34)
Despawning Enemies (4:19)
Saving the Player's Quest Items (4:52)
Checking for Quest Items (5:01)
Stopping the Quest Item State (5:17)
Checking the NPCs for Quest Items (6:57)
Updating NPCs with Quest Items (4:20)
Section 17: Camera, Lights, Action!
Camera Priority (2:48)
Adding Virtual Cameras (6:39)
Creating a Sequence (7:13)
Camera Dolly (6:58)
Animating the Camera Dolly (3:15)
Creating a Cinematic Trigger (3:47)
Playing Sequences (5:20)
Playable Director Events (3:53)
Stopping Player Movement (5:27)
Toggling Booleans (2:41)
Adding the Enemy Boss (8:22)
Exercise: Creating a Cutscene (6:57)
Custom Awake Behavior (4:14)
Section 18: Audio
Audio Components (5:45)
Finding Audio (3:01)
Adding an Audio Clip (2:15)
Playing an Audio Clip (3:19)
Attack Sound Effect (4:16)
Attack Audio Event (4:09)
Treasure Chest Sound Effect (3:45)
Exercise: Reward Sound Effect (3:15)
Creating a Victor/Game Over UI (4:47)
Displaying the Victor/Game Over UI (13:42)
Storing Audio Clips (2:30)
Playing Audio for Game Completion (6:02)
Looping Audio (3:44)
Understanding Enumerators (2:45)
Using IEnumerator (4:50)
Fading Out Audio (6:30)
Section 19: Polishing the Game
Adding Weapons to Enemies (2:14)
Adding Pause States (4:54)
Toggling Pause Statess (5:02)
Preventing the Player from Pausing (3:17)
Setting the Time Scale (3:00)
Adding a Dirt Path (3:44)
Updating our Maps (6:54)
Baking the Navigation Mesh (3:36)
Adding an Ocean Plane (4:27)
Updating the Main Menu Scene (1:18)
Rotating the Camera Around a Point (4:37)
Skyboxes (4:41)
Supporting Additional Input Devices (5:17)
Section 20: Publishing a Game
WebGL Builds (6:29)
Publishing to Itch.io (9:30)
Where To Go From Here?
Thank You! (1:17)
Review This Course!
Become An Alumni
Learning Guideline
ZTM Events Every Month
LinkedIn Endorsements
Using IEnumerator
This lecture is available exclusively for ZTM Academy members.
If you're already a member,
you'll need to login
.
Join ZTM To Unlock All Lectures