
Kick off a vampire survivor style game in Unity and C# by getting set up in Unity, exploring the course, and comparing against the completed project for reference.
Set up a new 2D Unity project, import assets (sprites, audio, fonts), adjust to full HD, and remove unused packages to ready a scene for a vampire survivors style game.
Create a new 2D Unity scene with an orthographic camera and save it as main. Use the tile map system and tile palette to paint grass tiles across the ground.
Create an empty player object with the sprite as its child, set the position to zero, and use sorting layers to keep the player in front of the background.
Create a Unity script named playercontroller, attach it to the player, and use a public float moveSpeed with start and update methods to enable movement.
Move a Unity character by updating the transform with a vector from horizontal and vertical axes using get axis raw, applying time.deltaTime for consistent 2D movement.
Normalize the player's move input to keep diagonal speed consistent with left, right, up, and down in a Unity and C# game, ensuring natural movement across directions.
Create a camera controller in Unity that follows the player by tracking the player's transform in late update, preserving the camera's z position while updating x and y.
Create idle and moving animations in Unity for the player, using the animation window and animator, and toggle the isMoving boolean based on input for instant transitions.
Add an enemy in a Unity 2D scene by creating an enemy object with a child sprite, a circle collider, and a rigidbody 2D, and set gravity scale to zero.
Create an enemy that chases the player in a vampire survivors game in Unity using C#. Implement an enemy controller that sets the Rigidbody2D velocity toward player's position with normalization.
Learn to animate enemies in Unity with a lightweight script that scales the sprite using Vector3.MoveTowards and random speed variations, replacing heavy animators for better performance.
Create a player health controller with current and max health, implement take damage, and deactivate the player when health reaches zero; test by pressing T to apply 10 damage.
Learn how enemies damage the player using a singleton player health controller, collision events, and a public damage value in Unity. Address rapid damage when enemies rub against the player.
Add a hit wait time and a hit counter in the enemy controller, using time.deltaTime to count down between hits, enabling per-enemy cooldowns and safer player fights.
Create a world space health bar above the player with a UI canvas and slider, adjust the background and red fill, and ensure it stretches to reflect health.
Link a health slider to the player's health in Unity, set max health before current health, update the slider on damage, and disable user interaction to keep the bar accurate.
Turn the enemy into a reusable prefab, then spawn multiple copies over time to test combat, while using overrides, apply, and revert to keep base values consistent.
Create an enemy spawner in Unity with a C# script to spawn enemies at a set time interval, using a spawn counter and instantiate at the spawner's position.
Move the health bar to a dedicated UI sorting layer so it remains visible above the player and enemies. Have enemies follow the player via the health controller's transform.
Optimize enemy spawning and despawning by calculating a spawn distance from the player and despawning distant enemies, using a maintained list of spawned enemies for efficient distance checks.
Learn to despawn distant enemies efficiently in Unity by checking a limited number per frame, destroying those beyond spawn distance to maintain smooth gameplay.
Implement a take-damage system for enemies in Unity: add health, a take-damage method, and a damage-causing damager that destroys enemies when health reaches zero.
Add a particle system to the fireball and adjust shape, emission, lifetime, speed, and start size. Use color over lifetime and world space to create a trailing, fading effect.
Create timed fireball spawns that despawn after a set lifetime and enforce a spawn cooldown, turning an orbiting weapon into a dynamic, risky hazard for enemies.
In this Unity and C# lesson, the fireball grows from the center (the player) to a target size using move-towards, then shrinks by lifetime timing and disappears.
Implement a knockback system for enemies by adding knockback time, a counter, and an overloaded take damage function with a should knockback option; test in Unity to see enemies recoil.
Set up a world-space damage number canvas with Text Mesh Pro to display floating damage above enemies, using a pixel-art font and a clear outline for readability.
Learn to display and spawn damage numbers in Unity using Text Mesh Pro. Build a damage number display and a controller to instantiate damage text at enemy positions.
Improve the visuals by making damage numbers float upward, switch the damage number canvas to UI layer for visibility, and tune the float speed with a variable for better feedback.
Learn how to implement object pooling for damage numbers in a Unity game, reusing numbers instead of destroying them to improve memory efficiency and reduce garbage collection.
Learn to spawn enemies in waves by creating variants through palette swaps, adjust health, damage, and speed, and convert them into prefabs in Unity C#.
Master how to implement wave-based enemy spawns in Unity by tracking current wave and time between spawns, instantiating enemies at chosen spawn points, and advancing waves when counters reach zero.
Set up a Unity experience system with a static instance experience level controller that tracks current experience and enables future level ups, plus experience pickups spawned when enemies die.
Create a 2D experience pickup in Unity using a trigger circle collider and OnTriggerEnter2D to grant exp via the experience level controller, with a set value and collection destruction.
Develop a central, upgradeable pickup range controlled by the player, so pickups move toward the player when in range, using spaced checks to optimize performance.
Drop experience by turning the pickup into a prefab, assigning it in the experience level controller, and spawning it from enemies on death, then tune experience values per enemy.
Create a 100-level experience system by building an experience levels list, initializing the current level, and using a while loop to auto-populate thresholds with int conversion.
Implement a private level-up method that advances current level when experience hits thresholds from the experience levels list, carries over leftover experience, and caps at max level.
Create a UI controller on the canvas to drive the experience bar and level text, updating a slider and level display from the experience system.
Learn how to create and program your very own vampire survival-style game using Unity, an industry-standard game development program used by large gaming studios and indie developers across the world.
In this course you won’t just be learning programming concepts, but tying these concepts to real game development uses. You will have access to a course forum where you can discuss the topics covered in the course as well as the next steps to take once the course is complete.
This course has been designed to be easily understandable to everyone, so whether you’re a complete beginner, an artist looking to expand their game development range or a programmer interested in understanding game design, this course will help you gain a greater understanding of development.
At the end of this course you will have developed the ability to understand such game elements as:
· Destroying Hordes of Attacking Enemies
· Multiple Unique Weapon Types
· Developing a Complete Upgrade & Unlock System
· Creating an Object Pooling System
· Spawning Waves of Attackers
· Levelling Up The Player
· Displaying Damage Numbers
· Audio Systems
· Building & Sharing Your Game
· And much more…
The course also includes a complete version of the project to use for your own reference to ensure everything in your game works as it should!
Start learning today and let me help you become a game developer!