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
Moving Enemies to the Path
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