
Let's learn how to download what we need to get started coding 3D games in Unity.
Let's learn the Unity interface and how to create 3D objects and move them around.
Let's learn how to use the new TextMeshPro to write Hello World and other cool things.
Variable types in C# define the kind of data a variable can hold, like integers, floats, or strings, while scope determines where the variable can be accessed, such as within a method, class, or globally throughout the program.
Variable types in C# define the kind of data a variable can hold, like integers, floats, or strings, while scope determines where the variable can be accessed, such as within a method, class, or globally throughout the program.
Here are some variable examples to help you understand how you can use them.
Methods in C# are blocks of code that perform specific tasks, encapsulating functionality for reusability and clarity. They can take parameters, return values, and have various access levels, such as public or private, to control their visibility and usage within a program.
Methods in C# are blocks of code that perform specific tasks, encapsulating functionality for reusability and clarity. They can take parameters, return values, and have various access levels, such as public or private, to control their visibility and usage within a program.
Methods with parameters allow you to pass data into a method when calling it, enabling the method to perform tasks with specific inputs. Parameters are defined in the method signature, and arguments are the values you provide when invoking the method. This makes methods flexible and reusable for different scenarios.
Methods Return Type: In C#, a method's return type defines the type of value the method will return to the caller after execution. It could be a specific data type (e.g., int, String, boolean), a custom object, or void if the method does not return a value. Understanding return types is crucial for designing methods that effectively communicate their results or actions to other parts of the program.
Methods Return Type: In programming, a method's return type defines the type of value the method will return to the caller after execution. It could be a specific data type (e.g., int, String, boolean), a custom object, or void if the method does not return a value. Understanding return types is crucial for designing methods that effectively communicate their results or actions to other parts of the program.
An if statement checks a condition and executes code based on whether the condition is true or false. It’s like a decision-making flowchart, where the program takes different paths depending on the evaluation of the condition.
Else If Statement: An else if statement is used to test multiple conditions in a program. If the first if condition is false, the program checks the else if condition. It allows for more complex decision-making by evaluating additional scenarios before defaulting to the final else block, if present.
A nested if is an if statement placed inside another if statement. This allows you to check multiple conditions in a hierarchical manner, where the inner if is only evaluated if the outer if condition is true. It's useful for handling more complex decision-making scenarios.
A class is a blueprint for creating objects in object-oriented programming. It defines the properties (fields) and behaviors (methods) that the objects will have. In C#, for example, you can use a class to model real-world entities and organize your code into reusable components.
A class is a blueprint for creating objects in object-oriented programming. It defines the properties (fields) and behaviors (methods) that the objects will have. In C#, for example, you can use a class to model real-world entities and organize your code into reusable components.
A class is a blueprint for creating objects in object-oriented programming. It defines the properties (fields) and behaviors (methods) that the objects will have. In C#, for example, you can use a class to model real-world entities and organize your code into reusable components.
A while loop is a control flow statement that repeatedly executes a block of code as long as a specified condition is true. It's useful for tasks where the number of iterations isn't predetermined, such as reading input until a valid value is entered.
Coroutines are special methods in Unity that allow you to pause execution and resume later, useful for creating timed events like animations, delays, or sequences. In C#, they use StartCoroutine() and yield return to control the flow.
A for loop is used to repeat a block of code a specific number of times. It’s ideal for tasks where you know the exact number of iterations, like looping through an array or counting numbers. In this lesson, we’ll learn how to set up a for loop, define conditions, and use it effectively in Unity projects.
A foreach loop in C# is used to iterate over elements in a collection, such as an array or list. It simplifies looping by automatically accessing each element without needing an index, making it ideal for reading data.
In Unity, Transform.position determines an object's location in world space using a Vector3. By modifying Transform.position in code, you can move objects to specific coordinates or dynamically adjust their position during gameplay.
Transform.rotation controls an object's orientation in 3D space using a quaternion. You can set or modify rotation with Transform.rotation for precise quaternion values or Transform.eulerAngles for more intuitive angle adjustments in degrees. This allows for dynamic rotations in gameplay through scripting.
Transform.rotation controls an object's orientation in 3D space using a quaternion. You can set or modify rotation with Transform.rotation for precise quaternion values or Transform.eulerAngles for more intuitive angle adjustments in degrees. This allows for dynamic rotations in gameplay through scripting.
Transform.localScale defines the size of an object relative to its parent. It uses a Vector3 to set the scale along the X, Y, and Z axes. Adjusting localScale in code allows you to resize objects dynamically during gameplay.
In this lesson, we’ll learn how to use else if statements to build a simple state machine. A state machine helps manage different states of an object or character (e.g., idle, walking, jumping) and switch between them based on conditions. This foundational concept is key for creating responsive gameplay mechanics.
In this lesson, we’ll explore how to use a switch case to create a simple state machine. Switch cases provide a cleaner and more organized way to handle multiple states, like idle, walking, or jumping, making your code easier to read and maintain. This approach is great for managing game logic efficiently.
In this lesson, we’ll explore how to use a switch case to create a simple state machine. Switch cases provide a cleaner and more organized way to handle multiple states, like idle, walking, or jumping, making your code easier to read and maintain. This approach is great for managing game logic efficiently.
In this lesson, we’ll explore how to use a switch case to create a simple state machine. Switch cases provide a cleaner and more organized way to handle multiple states, like idle, walking, or jumping, making your code easier to read and maintain. This approach is great for managing game logic efficiently.
We start building the basic movement code for our top down shooter.
Learn how to grab user inputs in Unity using C#! This lesson covers detecting key presses, mouse clicks, and touch inputs to interact with your game objects and trigger actions. Perfect for adding player controls and dynamic gameplay features!
Master adding force with vectors in Unity! This lesson explores applying physics-based movement to objects using Rigidbody and vector math. Learn to create dynamic motion, like jumps, pushes, and directional force, for more engaging gameplay!
Discover Unity's physics materials! Learn to customize object interactions by adjusting friction and bounciness, including creating frictionless surfaces for smooth, dynamic gameplay effects.
In C#, drag is often used in movement systems to simulate resistance, gradually reducing an object's velocity over time. It can be applied to limit an object's speed or create smoother motion. By combining drag with a maximum speed check, you can ensure controlled and realistic movement behavior in your programs or games.
Writing to the Screen in Unity (GUI): In Unity, you can display text on the screen using components like UI Text (deprecated, now replaced by TextMeshPro) or TextMeshPro. These components allow you to dynamically update the text during gameplay, such as showing scores, messages, or instructions. You can modify text content through scripts by accessing the .text property of the Text or TextMeshPro component.
In programming, normalizing speed involves adjusting an object's velocity to maintain a consistent direction while ensuring the magnitude (speed) fits within a specific range. This is often achieved by normalizing a velocity vector (making its length 1) and then scaling it by the desired speed. It's commonly used in game development to ensure smooth and controlled movement.
Learn how to use the right stick on a controller to aim by reading input values, calculating direction, and rotating your character or crosshair accordingly for smooth and responsive gameplay.
Learn how to use the right stick on a controller to aim by reading input values, calculating direction, and rotating your character or crosshair accordingly for smooth and responsive gameplay.
We need to make these updates so that shooting works correctly.
We start to code the shooting script, so we can fire bullets at enemies' faces.
Let's code some bullet creation.
Let's code some bullet creation.
Let's code some bullet creation.
Destroy bullets.
Let's create some bullet particle effects.
Learn how to add realistic gun recoil by making the weapon bounce back and forth during shooting. We'll use scripting to adjust the gun's position and rotation dynamically for smooth recoil effects.
Make the player vibrate different than the gun recoil, to add more Juice.
Add more juice with gun sounds.
We are going to stop the player from spinning when hitting enemies.
We are going to make characters look cooler.
Let's fix the collision issues.
Let's set up our state machine.
Making the enemy idle.
Let's make the enemies chase the player in a more complex way.
Making the enemy pause before dive attacking.
Making enemies dive attack.
Making enemies recover.
Making enemies collide.
An important update.
Making the enemy die.
Playing a death sound when the enemy dies.
Let's clean up the enemies.
Let's play a random death sound when the enemies die to add some variety.
Handling player death.
Let's make how the player dies more interesting.
Handling the death of player in a more advanced way.
Making a game manager in C# in order to handle player lives.
In this lesson, we are going to learn how to switch between levels.
We learn to code a spawner for our enemies.
We learn to code a spawner for our enemies.
We learn to code a spawner for our enemies.
We learn to code a spawner for our enemies.
This is where we learn to code a level manager, which allows us to control the whole flow of the level and when and what enemies spawn.
We are going to code a way to randomize the level manager.
Ever dreamed of creating your own video game but felt overwhelmed by coding? This beginner-friendly course is exactly what you need. With zero experience required, you'll learn to build engaging games using Unity and C#, guided every step of the way.
Unlike typical "copy-and-paste" tutorials, you'll genuinely grasp each concept. Through clear, visual explanations and interactive projects, we'll ensure the fundamentals—like variables, loops, methods, classes, and state machines—become second nature.
You'll quickly transition from theory to practical Unity mechanics, mastering movement, shooting mechanics, enemy AI, scene transitions, and spawning systems. Learn to code responsive and satisfying game experiences, complete with realistic bullet physics, player recoil, immersive gamepad feedback, and dynamic audio cues. Your games won't just work; they'll feel great to play.
Perfect for creatives, aspiring developers, or anyone curious about how games are made, this course empowers you to turn ideas into reality. By the end, you'll proudly showcase your fully playable game and have the confidence and skills to continue creating independently. With supportive community interaction and instructor feedback, you're never alone on your game development journey.
No prior coding knowledge? No problem—just bring your curiosity. Start your journey today, and unlock your potential as a game developer.