
Begin with fundamentals in Unity by building Elide, a cube game, then advance to Platform Survival, and finally create an RPG Adventure with advanced AI and quest systems.
Resolve issues in Unity by reading error messages, comparing your code to the provided lines, and using the lecture resources and code links to fix null reference errors.
Install Unity hub, choose a personal plan, and install the latest Unity 2020.2 release; create a simple 3D project and explore the interface—hierarchy, inspector, game view, and assets.
Explore the Unity editor by navigating a scene, creating and manipulating 3D objects, and mastering transform properties—position, rotation, and scale—using move, rotate, and scale tools.
Create and manage game objects in Unity, build a parent-child hierarchy, and move and scale them to observe how child transforms relate to their parent.
Explore the main camera in Unity, adjust its transform to shape the game view, rotate and position it relative to the player, and tune field of view with reset options.
Explore Unity components that define game object behavior, from transform, camera, and light to mesh renderers and colliders, and learn how to create and attach custom scripts.
This project preview shows a basic Unity game where a player moves horizontally between walls as enemies spawn and approach, teaching positioning, movement, spawning, and health and stats UI.
Create a player composed of a capsule, cube, and sphere, align it to the correct axes, rename the capsule to player, and adjust transforms to face forward before adding materials.
Create and apply a green material to the player in Unity, adjust metallic and smoothness settings, and set up directional light to cast shadows and simulate sunset.
Open the lighting window and add a directional light to adjust the scene's daylight. Bake the lighting to precompute lighting data on disk for better performance.
Set up a Unity project, attach a player controller script derived from MonoBehaviour, and learn how Start and Update drive per-frame behavior with delta time.
This lecture shows how to track elapsed time in Unity by accumulating delta time in update, triggering actions every second and resetting the timer, and it introduces an fps counter.
Explore Unity life-cycle functions such as Awake, Start, Update, FixedUpdate, and LateUpdate; learn their call order, how OnEnable/OnDisable affects them, and how to initialize objects and components.
Explore the Unity life-cycle functions in fixed update, update, and late update, and learn how to use them for physics, input, and camera adjustments.
Create a basic enemy cube in Unity 3D, assign color, and implement a stats component to track player and enemy health, enabling inter-component communication.
Get a reference to the stats component from the player controller using GetComponent with a generic type, and debug health across player and enemy.
Learn to access another object's stats component and read player and enemy health across scripts using get component and find in Unity.
Learn to access components in Unity using editor assignments and one-line GetComponent calls, wiring player and enemy stats through public variables and drag-and-drop in the inspector.
Diagnose a null reference when accessing stats and health through player and enemy controllers in Unity, and ensure proper initialization by moving stat references into the start function.
Master horizontal and vertical input in Unity with GetAxis for the axes. Use -1 to 1 input values from keyboard or joystick to move the player's transform.
Learn to move the player in Unity by applying horizontal and vertical input to transform.position, using a three-component vector, and using delta time to move per second.
Adjust the transform position by using Time.deltaTime and a public speed variable; multiply horizontal and vertical input by speed and delta time for frame-rate independent movement.
Learn to implement left-right player movement by removing vertical input and delta time, then scale a plane, assign yellow material, and place walls to constrain motion for the RPG scene.
Build left and right walls in Unity, scale the plane, color the walls blue, duplicate objects, and prevent the player from moving through walls while enemies attack only between them.
Block the player's movement within walls by using colliders and a boundary check in Unity. Learn to set left and right wall boundaries, implement position checks, and debug.
Fix restricted movement by checking the future horizontal position before applying movement, and adjust wall boundary checks using wall scale and player size in Unity 3D.
Implement enemy movement by updating the enemy position in the update function so the enemy moves toward the player, using a speed variable and time delta to chase the player.
Discover how to use prefabs to spawn multiple enemies at timed intervals, with each enemy moving toward the player, by creating a prefab blueprint and applying changes to all instances.
Create a spawn manager script that instantiates enemy prefabs at runtime using a timer and public prefab reference, with time.deltaTime controlling a two-second spawn interval.
In Unity 3D and C#, learn to spawn enemies every two seconds using invoke repeating, randomize x position between -7.75 and 7.75, and instantiate prefabs with position and rotation.
Learn to spawn enemies with randomized x positions, monitor their z position in the enemy controller, and destroy the enemy game object when it crosses a minus 20 threshold.
Learn to destroy enemies on collision by measuring the distance to the player with vector3 distance, decrease the player's health, and destroy the enemy within one meter.
On enemy hit, call the player's receive damage function to deduct health (e.g., 10) from current health, by finding the player object and getting its player controller component.
Implement a player damage flow in Unity by accessing the stats component to decrease health by ten when hit, and call update health to reflect the change.
Create a canvas heads-up display to show the player's health, add a health text element, and position it in the left top corner with proper anchor and pivot.
Learn to display and update the player's health on the hud with a health text element and a hud manager in Unity, updating on damage in real time.
Create a new catch enemy in unity 3d using c#, assign a unique color, attach an enemy controller script, and spawn the enemy from a prefab to test catching mechanics.
Create a catch enemy type and implement a dedicated catcher spawn using a catcher prefab, mirroring the spawn enemy logic with adjusted intervals and start times.
Refactor the enemy spawner by introducing a generic spawn function that selects the correct prefab based on an enemy type enum (evader or catcher), reducing code repetition.
Define catcher behavior by checking enemy type and a z-axis distance to trigger health loss only when the catcher passes by or catches the player, and destroy the catcher afterwards.
Learn to restart the game automatically when the player's health reaches zero by reloading the active scene via scene management, and explore basic 3D movement, prefabs, and upcoming RPG features.
Download and open the cube assignment in Unity, run the project, and debug the player controller, camera position, enemies, and health logic to complete the first project.
Fix the first Unity project by correcting the camera behind the player, movement axes, and enemy spawns, and ensure proper health logic and scene loading.
Begin a new Unity 3D project by building a game where the player moves, rotates toward input, and evades waves of spawning enemies while collecting power-ups to boost speed.
Create a Unity project named platform survival, build a 3x3 platform with a capsule player, set up camera and lighting, apply materials, and plan a multiplayer and rigidbody player controller.
Create a Unity player controller to move a game object along horizontal and vertical axes using input and transform.position, with speed and delta time; note diagonal movement speeds up.
Move the player in Unity by building a vector from horizontal and vertical input, then translate the transform with that vector scaled by Time.deltaTime to ensure smooth, frame-independent movement.
Learn how normalization keeps Unity movement consistent by preventing faster diagonal speed. See how diagonal inputs yield about 0.7 per axis and how before-and-after normalization changes movement.
Explore how Unity movement vectors are normalized to keep diagonal speed consistent, using the normalize function to adjust x and y components.
Learn to make the main camera follow the player by parenting it to the player and adjusting angles for a dynamic view. Get practical tips on camera setup in Unity.
Add a rigid body component to the player, enable gravity, and freeze rotation on the X and Z axes to prevent tipping. Toggle kinematic to stop forces and collisions.
Access the rigidbody component and move the player with MovePosition, using the current position plus a movement vector, updated in fixed update for physics-based movement.
Explore Rigidbody basics in Unity: mass, drag, angular drag, gravity, and kinematic settings; apply forces to move and rotate a player, and consider collision detection and interpolation.
Build bidirectional elevators in Unity by modeling an elevator cube, applying material, creating an elevator script, and duplicating it as a prefab to place four around the platform.
Implement four elevators in Unity using C#, moving along the y axis for three seconds at five meters per second, then reversing direction with time tracking and transform translate.
Learn to implement elevator movement in Unity using coroutines, delaying actions with yield return wait for seconds, starting coroutines correctly, and coordinating three-second up and down cycles.
Learn to implement a start coroutine in Unity to delay startup by three seconds, then enable elevator movement and continue with coroutine-based timing.
Refactor the elevator logic to track travel distance instead of time, using a 15-meter maximum and a distance step with an absolute value for safe, tweakable control.
Learn to implement player–elevator interaction using on trigger enter in Unity, toggle triggers, and keep the player aligned with a moving elevator while exploring common pitfalls.
Switch to fixed update and time.fixedDeltaTime to smooth elevator movement. Use trigger enter to identify elevator triggers, compare tags, and apply actions, then inspect colliders and create custom tags.
Demonstrate setting the player's parent to the elevator on trigger enter so movement follows the moving platform, with trigger exit to reset, and discuss limitations plus an alternative approach.
Learn how to keep a player sticking to a moving elevator in Unity by calculating and applying a vertical offset relative to the elevator, ensuring the player moves with it.
Refactor the Unity 3D player script to keep an elevator reference and a y-axis offset, enabling riding the elevator while addressing synchronization and future rigidbody fixes.
In Unity, you add a rigidbody to elevators, set them to kinematic to prevent gravity, and synchronize player and elevator movement using move position and a two-step vector3 update.
Detach the main camera from the player and script a follow behavior in Unity, using Vector3 differences and LateUpdate to keep the camera behind the moving player.
Explore implementing player rotation in Unity using quaternions, from two rotations, aligning to the movement vector, and using the forward (Z) axis for smooth direction-based rotation.
Rotate toward mechanics align the player's rotation with movement direction using target and current rotation, limiting with max degrees per second and delta time for smooth, frame-rate independent turning.
Learn to slow rotation in Unity 3D when moving in certain directions, and constrain rotation to the Y axis for left and right movement.
Explore how the dot product of a movement vector and the forward vector determines direction in Unity, illustrated with code examples, practical movement cases, and a dot product resource video.
Refactor the rotation system in Unity using look rotation to rotate toward the movement vector on the Y axis, with a zero vector check to stop rotation when idle.
Create an enemy game object, assign a sphere, add an enemy controller script that makes it chase the player, and convert the enemy to a prefab for deploying multiple enemies.
Implement an enemy that follows the player using a Rigidbody, calculating direction with vector math and applying force to chase at adjustable speed.
Implement enemy AI that follows the player on the x and z axes using move toward, balancing gravity with adjustable speed, drag, turning, and future destruction and spawning.
Implement a spawn manager that spawns enemy prefabs at random x and z positions within -15 to 15, using the start method and instantiate, with plans for multiple respawning enemies.
Learn to spawn and destroy enemies in Unity using an enemy controller and bond manager, implementing a spawn when the enemy count is zero to create waves.
Create a spawn manager that increases enemy waves to make the game progressively harder. Implement a for loop to spawn one additional enemy per wave.
Create a floating power-up in Unity by spawning yellow cubes, applying a bright material, and rotating it on the y-axis; colliding grants speed or strength boosts.
Learn how to implement a speed power-up in Unity 3D with C#, using on trigger enter or collision, applying a speed modifier, destroying the power-up, and testing the boost.
Increase the player's speed with a power up, using a speed modifier of two, via a coroutine to wait several seconds before resetting the speed modifier to one.
Add power-ups to boost the player's speed modifier and strength, push enemies away with impulse during collisions, and balance values through testing in Unity.
Create a circle game object as a child of the player or enemies to indicate active powers, and position it at the parent center using Unity C# scripting.
create circle around a game object in unity using a static utility class with a draw circle method that adds a line renderer and sets points to form the circle.
Draws a circle around the player with a line renderer, using 360 points around a radius. Converts degrees to radians and applies cosine and sine to compute each point.
Draw a circle around the player in Unity by sampling 360 degrees, converting to radians, and using cosine for x and sine for z with a radius.
Add a circle around the enemy as a field that pushes the player away when they enter. Set a dynamic push radius and ensure the circle sits on the ground.
Add a push range to an enemy in Unity 3D with C#, compute player–enemy distance using move towards and magnitude to check the push radius, and apply a two-second recharge.
Create a canvas and start button in the Unity UI, then wire the button to a GameManager script that toggles the game active state and starts the game.
Connect the start game button to a spawn manager in Unity using C#, enable start spawning, manage enemy waves, and prevent excessive spawns by disabling the button.
Disable the start canvas when the game begins and spawn enemies after pressing start, using a Unity event on player lost to restart the game via the game manager.
Implement an on game start interface and use a game manager to invoke Unity events that activate the player and elevators when the game begins, keeping movement disabled before start.
Finish the project by ensuring the start button begins gameplay, spawning a power-up after each enemy is defeated, and refining the spawner and game manager to control elevators and events.
Diagnose and fix a platform survival game in Unity, including elevator behavior, enemy pursuit, and a camera that follows the player.
Walk through the project solution to fix elevator mechanics, enemy AI targeting, camera control, and power-up spawning in a Unity 3D C# RPG.
Explore the final project by building environments, villages, quests, mountains, trees, textures, grass, and character models, while implementing combat, inventory, ui detection, item pickups, and a leveling system with bandits.
Practice basic player movement and camera rotation toward the player in Unity 3D, as part of the section intro for the complete RPG guide for beginners.
Initialize a new Unity 3D RPG project titled RPG adventure, set up an empty scene with a large plane, generate lighting, and create a yellow floor material named Flora.
Inspect a Unity RPG example inspired by the 3D game kit, refactor its code, and explore the open scripts to discover features while appreciating Unity credits.
Create a player capsule and a simple movement script using horizontal and vertical axes, translating movement with speed in fixed update, under an RPG adventure namespace.
Apply Rigidbody movement in Unity by accessing the Rigidbody component and using MovePosition to move the player, while constraining X and Z to prevent falling.
Organize the RPG adventure assets into a clean folder structure. Implement player rotation in Unity using quaternions and look rotation, driven by the movement vector, rotation speed, and delta time.
Explain how to rotate the player toward movement on the y axis using rotate towards, control the rotation with fixed time delta and rotation speed, and test a follow camera.
Configure a follow camera in Unity to track the player with an offset, updating in late update. Learn how public and serialized fields impact editor access.
Rotate the camera to follow the player's yaw rotation in Unity, keeping the camera behind and aligned with the player while adjusting its position as the player turns.
Refactor the camera rotation to follow the player using a transform target, look at the player, and use larp (linear interpolation) to smoothly rotate behind them.
We explain rotating the camera by lerping between the current and target angles for smooth movement. We discuss the interpolation coefficient and the A, B, T values that shape frames.
Learn camera control in Unity 3D by rotating the player 45 degrees on the Y axis, applying quaternion rotation, and positioning the camera to look at the player.
Apply linear interpolation in Unity with a C# script to move a cube on the z axis from 0 to 10 using lerp and the a+(b-a)*t formula.
Implement camera-relative movement by computing a directional vector from horizontal and vertical inputs, rotating toward the camera's direction, and moving with normalized speed for smooth, responsive control.
Move your character in the camera's facing direction by converting input into a directional vector, rotating it with the camera's rotation, and applying it to the current world position.
Convert horizontal and vertical input into a normalized movement vector and apply it to position. Rotate toward the movement direction using look rotation to align with the movement vector.
Set up a camera system with a virtual camera to orbit the player, integrating a new player model and a character controller for 360-degree rotation.
Install and configure the Cinemachine package, create a virtual camera, and tune follow and look-at targets, orbit radii, damping, and speed to achieve smooth third-person camera control.
Enable camera movement in unity 3d by holding the right mouse button, adjusting x and y axis speeds with a cinemachine setup, and resetting when play ends.
Learn to configure the Unity input manager for camera control using mouse axes and custom camera X and Y inputs, adjusting gravity and sensitivity.
Learn to rotate the player in the direction of the main camera by applying the camera's y-axis rotation to the player, using quaternion rotation and rigidbody move rotation in Unity.
Learn to move the player in the camera's direction by rotating input with the camera, using a normalized target direction on the XZ plane, and applying speed for consistent movement.
Replace the player's body with a character controller, remove the capsule, and use the controller's move and rotation to drive movement and orientation in a third-person setup.
Replace the capsule with the actual character model and configure the character controller, then import a free asset package from the Unity Asset Store and use the prefabs.
Set up the character controller and camera follow, then tune slope limits, step offset, center height, and radius to ensure stable ground contact, smooth movement, and stairs navigation.
Create a dedicated player input script to capture horizontal and vertical input, expose a move input vector, and wire it to the player controller for movement.
Refactor move input to use a Vector3, mapping horizontal and vertical axes to the x and z components, multiply by input, and test in Unity to ensure smooth movement.
Learn camera-aligned player movement and set up the animator to switch running animations with blend trees, tuning speed for varied locomotion in Unity 3D and C#, RPG guide for beginners.
Master Unity's animator to build a state machine with transitions and speed-based parameters. Link idle, stance, and walk states to drive combat animations through exit-time rules.
Create and configure a new animator controller for the player, add idle and locomotion states, and drive transitions with a forward speed parameter to trigger running.
Learn to control a Unity character's forward speed by driving an animator float parameter from script using input magnitude, with hashed parameter names for maintainability.
compute forward movement from input magnitude, scale by max speed eight, and feed to the animator using a private compute movement method with move towards and fixed delta time for smooth acceleration.
Learn to compute forward speed and implement acceleration and deceleration in Unity using fixed delta time, movement input, and constant values to control player motion.
Learn to compute and apply player rotation using movement input and camera direction, by calculating a target rotation with quaternions and updating transform rotation in fixed update.
Learn to debug Unity code with breakpoints and attach to the game. Inspect variables step by step, including movement and rotation calculations using quaternions and the immediate window.
Demonstrates how to compute and apply the player's rotation when the camera faces forty five degrees, using move input, camera direction, and look rotation to align forward movement.
Implement smooth player rotation in Unity by transitioning to a target rotation with quaternion methods, replacing abrupt turns with controlled interpolation. Expose max and min rotation speed as public variables.
Learn to smooth character rotation in Unity by detecting backward movement with dot product, flipping to the opposite camera direction, and applying target rotation to ensure seamless movement.
Change the animator settings to animate physics and apply motion from a script, using delta position to drive the player's movement each frame.
Refactor the camera controller by moving it from the player to the main camera, using camera.main and get component for access and rotation control.
Create a locomotion substate machine and a blend tree controlled by the forward speed parameter to blend idle and sprint animations, then configure thresholds and transitions in the base layer.
Improve character animation fluidity in Unity by fixing locomotion transitions between the locomotion substate and base layer, using forward speed conditions to exit and blend animations smoothly.
Add gravity in Unity by exposing a public gravity value, computing vertical speed, and applying gravity to the player's y axis for realistic falling.
Introduce enemies in a Unity 3D RPG project, implement angle-based detection, and review debugging logs showing when the player is detected.
Boost fps in Unity 3D games by adjusting quality settings in the project settings to medium or low, and enabling in-game options to improve performance.
Create a bandit character in Unity by selecting a prefab, adding a bandit behavior script, and integrating with a basic animator setup to enable gameplay interactions.
Learn how to access the player controller as a static instance in Unity 3D for a Bendit enemy AI, laying groundwork for the enemy detection range.
The lecture demonstrates detecting the player by locating the player, calculating the distance to the enemy on the xz plane, and triggering detection when within a configurable radius.
Learn to visualize an enemy's detection range in Unity by drawing a solid arc around the target in the editor using gizmos and a configurable angle and radius.
Draw a solid arc in the Unity editor using Altro Gizmo Selected to visualize a detector’s field of view, applying transform forward, rotation, and a radius.
Apply dot product techniques to detect the player within a forward arc in Unity 3D, using normalized vectors, a detection radius, and cosine thresholds to trigger alerts.
Compute the dot product between the enemy's forward vector and the player's normalized position to detect the player within a detection radius using the cosine of the half-angle, in Unity.
Explore enemy AI in a Unity 3D RPG starter course, teaching how to detect the player and follow within a configurable range, and how to configure navmesh surfaces for movement.
Implement player detection within range and guide enemies to pursue the detected player by retrieving the player's position, updating a target, and directing enemies toward the target's position in Unity.
Enable nav mesh agent on the enemy, bake a navigation mesh on a static plane, and use set destination to steer the enemy toward the player, enabling basic pathfinding.
Tune navmesh parameters by adjusting agent radius and height, set slope limits and step height, bake the navmesh, and test navigation across static structures.
Explore navmesh basics, including drop height, jump distance, and area costs that steer navigation agents to avoid lava and prefer cheaper surfaces, with multiple agents and priority.
Implement enemy pursuit in Unity by detecting the player within a range, assigning a target, and following the player until time since lost target reaches two seconds, then stop.
Animate enemies and implement a return-to-origin mechanic, including dragging enemies, following the player, and walking back when out of range, while introducing rotation handling.
Implement a stop-follow behavior for a bandit enemy in Unity 3D with C#, using a two-second wait, stopping the nav agent when out of range, then returning to start position.
Use an animator controller and a boolean in pursuit parameter to switch enemies from following the player to returning to their original position, with an idle state.
Implement the near base parameter in Unity to detect when the enemy reaches its original position by distance to the base, using a 0.01 threshold to drive pursuit and idle.
Fix line endings in Unity projects by configuring your code editor to convert endings, align OS X and Windows formats, and reload the project to remove warnings.
Create an enemy animation system in Unity by building an animator controller with idle, run, and walk states and parameter-driven transitions to drive sprint and pursuit animations near base.
Create a generic enemy controller in Unity to manage the agent and animator, decoupling movement from animation and deriving speed from the animator's delta position with a speed modifier.
Move the mesh agent into the enemy controller to centralize navigation, using a set follow target with a vector3 position and NavMeshAgent driven by the animator toward an idle state.
Refactor the player scanner into a pure C# class, expose detection radius and angle, and implement a serializable scanner that looks for a player via a detector transform.
Implement a basic attack system in Unity 3D with C#, enabling player and enemy attacks, animations, and rotation back to the original rotation after combat.
Set a stopping distance of 1.1 meters for the enemy to halt near the player, and trigger attack animations when within that attack distance using a public distance parameter.
Create an animator trigger named attack for Bendit, wire it from the behavior script to trigger the attack animation, and verify the parameter drives the attack state in Unity.
Configure the animator to trigger attacks when close to the player, linking idle and attack states and refining transitions to finish current attacks before returning to idle.
Refactor the enemy controller to manage follow target and stop follow target, controlling the agent's enabled state and animator-driven attack in Unity, clarifying destinations and range-based attack behavior.
Fix the enemy attack state by resetting the attack trigger in Unity's animator, attach a state machine behavior to the attack state, and enable transitions to a sword stance.
Fix the attack distance in a Unity 3D RPG setup by using magnitude checks and range thresholds to switch from following to attacking, with proper stopping behavior.
Learn to return an enemy to its origin by rotating to its original rotation with quaternion origin rotation and RotateTowards, using magnitude checks and delta time.
Implement and track the player attack input by detecting the left mouse button, toggle an attack state, and wire it into the player controller with a timed reset.
Improve attack input handling in a Unity 3D C# RPG project by implementing a timed attack wait, state toggles for attack true/false, and an animation trigger to fire the attack.
Learn to implement a melee attack animation in Unity by configuring the animator with a military attack trigger, renaming parameters, and wiring locomotion and combat substate machines with transitions.
Create a damageable system in Unity by adding a damage script to the player and bandit, tracking hit points and enabling damage from melee combat.
Refactor bandit behavior by extracting attack or follow target logic into dedicated methods, clarifying pursuit, target handling, and base navigation for a more readable Unity 3D C# implementation.
Fix the bandit initial walk animation by setting the near base parameter to true by default in the animator (or via code). Prepare for the upcoming weapon system work.
What is Unity?
Unity is a cross-platform engine. The Unity editor is supported on Windows, macOS, and the Linux platform, while the engine itself currently supports building games for more than 25 different platforms, including mobile, desktop, consoles, and virtual reality.
What are we going to build?
The course covers the development of 3 games. Starting with basic concepts explained in a simple game and finishing with more advanced concepts by creating an RPG sandboxed game. The course covers a full explanation of programming methods and related mathematics concepts.
The course starts with easy concepts, targets beginner developers or developers new to Unity, and then slowly progresses into more complex topics.
Project 1 (Evade the cubes)
The first part of the course covers basic concepts. Students will get familiar with the Unity editor and environment.
Base game mechanics
Orientation in 3D space
Positions of game objects + Vectors
Simple movement system
Score system
Health system
Materials & prefabs
UI & Canvas
Project 2 (Platform Survival)
The second part of the course is focused on the physical system.
Rigidbodies
Physic system
Movement + rotations
Follow camera
Coroutines
Adding forces
Powerups
Enemies
Following targets
Project 3 (Rpg Adventure)
The last part of the course covers more advanced concepts and the development of sandboxed RPG games.
Character controller
Cinemachine
3rd person camera and full movement
Animations
3rd party packages & models
Fight system + Combos
Enemies + Detection system
Quest System
Level System
Health System
Dialog system
Respawns
Inventory System
Weapon equipping
Terrain design