
Learn from a beginner-friendly course that builds from basics to advanced metroidvania skills, with detailed video examples, pacing options, and questions and answers on Discord.
Open Unity Hub, create a new 2D project with a basic 2D template and a chosen Unity version, then import the pixel art sprites from the resources folder.
Adjust pixel art imports in Unity: set sprite mode single, filter point, compression none, and pixels per unit 16 for 16x16 tiles; use presets to apply to sprites.
Apply the pixel art multiple preset and use the sprite editor to slice grids by cell size. Set 30 by 34 for sprites and 16 by 16 for tiles.
Use tilemap to create ground and walls for the first level, then build levels with tile palettes, brushes, and templates.
Create rule tiles by defining tiling rules on a grid with a default sprite. Rotate, mirror, and randomize rules to cover corners and walls; rule order decides the applied tile.
Add a tilemap collider 2D to the ground, merge into one polygon with a composite collider 2D, and set the ground as static, while organizing physics layers and sorting order.
Prepare the player by selecting idle sprite and renaming it to player. Create a sorting layer named player and add a dynamic Rigidbody2D with continuous collision detection and a collider.
Learn to set up the new input system in Unity by creating a Player Controls input actions asset, defining action maps and bindings for jump with space and move.
Master the new input system in Unity by wiring move and jump actions, reading the 1D axis values, and subscribing to performed and canceled phases to manage action maps.
Explore the state machine concept for the player, with enums for move, jump, and dash, a central player script, and connections to input, physics, and ability scripts.
Build a state machine for the player with an enum of states (idle, run, jump, double jump), a base ability system, and update and fixed update loops to process abilities.
Develop idle ability in Unity by making it a child class of base ability, overriding initialization and processing, and using a state machine with an idle state to run update.
Create an idle animation for the player using the animator: import idle sprites, configure idle and state, and set transitions with no exit time driven by a bool idle parameter.
Develop a move ability for the player in Unity 2D using a move ability script, physics control, and a run/idle state machine, updating the animator and ensuring immediate stop.
Implement a flip function using transform to rotate the player 180 degrees on the y axis to face left or right, driven by a public facing right flag and input.
Shoot invisible raycasts from the player's feet to detect ground, using left and right ground checks and a ground ray distance to determine the grounded state in Unity 2D.
Create a jump ability script, child of base ability. Link to the jump action's performed and cancelled phases, set jump force, air speed, minimum air time, gravity, and idle transition.
Create two jump animation clips (up and down) in a 1D blend tree driven by y speed and a jump bool, using the sprite sheet and updating the animator.
learn how to set up a Cinemachine 2d camera that follows the player, adjust damping, deadzone, look ahead, and other settings to eliminate twitching and ensure smooth motion.
Create a sprite atlas in the tiles folder to fix gaps between tiles; pack the tile set and background, adjust padding, and enable include in build to eliminate gaps.
Upgrade your Unity project to URP to enable pixel perfect camera with Cinemachine for 2D lighting, then install URP, create a 2D renderer asset, and convert sprite materials to lit.
Configure a pixel perfect camera in Unity URP with Cinemachine, set pixels per unit to 16, preserve a 16:9 reference resolution, and use the Cinemachine pixel perfect extension.
Create camera borders with a box 2D collider on a new Camera Edge Collider for the Cinemachine camera, set as a trigger, adjust to 16 to 9.
Fix sticky walls in the metroidvania by creating a physics material 2D named slip with zero friction and applying it to the player's Rigidbody 2D, preventing wall sticking.
Learn to detect walls for a wall jump in Unity by casting rays (upper and lower checks), using a ground layer mask, and updating a wall-detected flag in fixed update.
Implement a wall jump ability in a 2D Unity metroidvania using a wall jump action reference, directional force, timers, and a shared jump animation.
Create a wall slide ability by scripting a base ability, clamp the rigidbody’s vertical velocity with Mathf.Clamp, and enable jump-to-wall slide transitions with detachment and wall jump options.
Add a wall slide animation to the player in Unity, create the wall slide clip with a single frame and sprite, and configure transitions using a wall slide parameter.
This update demonstrates runtime control of abilities via the state machine, enabling move and wall jump, while preserving other systems and preventing unwanted wall slide transitions.
Unity 6's wall jump and slide update refines state transitions, adds toggle controls, and fixes a brief wall slide on detach by resetting wall detected to false.
Implement a dash ability by adding a dash action reference, dash force, and dash duration; trigger a dash with horizontal velocity, disable gravity during dash, and reset velocity on start.
Create a dash animation clip, add a dash parameter and transitions in the animator, and update the dash ability script to drive the animator for ground and air usage.
Implement a ladder climb ability by using a vertical 1D axis and input actions to move the player on ladders, toggle gravity, and manage trigger-based detachment.
Create a climb animation from a sprite sheet, configure a ladder boolean parameter in the animator with a transition, and enable or disable the animator to stop climbing.
Create a crouch ability by switching between standing and crouch colliders in Unity 2D. Manage inputs and states to enable and disable colliders as the player crouches.
Set up a crouch animation in Unity by creating a crouch clip and adding sprites. Configure a bool parameter and link it to the Crouch Ability script to control state.
Master crouch run mechanics by flipping in crouch, moving with crouch speed, and transitioning to jump; implement ceiling checks, two-dimensional raycasts, and animations for a fluid metroidvania feel.
Create a crouch run animation with two states driven by an x speed parameter, using x velocity and its absolute value to transition between crouch and idle.
Set up cross-device input controls using Unity's new input system, binding jump and move for keyboard and gamepad, adjust dead zones, and organize actions with control schemes.
Implement coyote time in the Unity 2D Metroidvania jump system by adding a coyote timer updated each frame, and test with quiet time settings to allow mid-air jumps.
Implement a variable jump in a 2d metroidvania game by holding the jump button to extend jump height, using a jump timer, gravity tweaks, and a dedicated variable jump ability.
Implement a multiple jump ability to enable double and triple jumps in Unity by creating a new script that inherits from base ability. Manage max jumps and activation logic.
Update jump transitions to skip the idle check when grounded and horizontal input is non-zero, applying the same improvement to variable jump and multiple jumps in their scripts.
Implement a multi-layer parallax background in Unity by scripting a parallax effect that moves backgrounds with camera delta movement, using x and y parallax values and layer order.
Create an infinite parallax background by tiling backgrounds, syncing their positions with the camera using sprite length, and moving background segments horizontally to repeat endlessly.
(*** NEW COURSE ***)
Let's start your game dev journey. This is much more than an ordinary Unity 2D course — it’s a complete learning journey designed to take you from beginner to advanced game developer, one powerful system at a time.
You'll not only learn how to implement core gameplay mechanics but also how to structure your code using clean and reusable systems. Everything you build will be scalable, so you can apply it to your future games, whether they’re Metroidvanias, platformers, top-down, or even RPGs.
Course Highlights
Beginner-Friendly, Yet Deep
Start from zero and progressively build your skills while creating a full game.
Unity’s New Input System
Learn to use Unity’s modern input system to support keyboard, mouse, and controllers with ease.
Custom Player State Machine
This is one of the course’s most powerful systems — it gives you full control over player behavior, allowing you to expand and create complex mechanics with minimal effort.
Versatile Save and Load System
Save progress, player data, visited areas, and more using a clean JSON-based system that you can use in almost any game genre.
Modular Weapon System
Create and manage both primary and secondary weapons with shooting, cooldowns, and effects — the foundation for action-packed gameplay.
Minimap and Dialogue Systems
Add immersion and guidance with an in-game minimap and trigger-based dialogues for story and gameplay events.
Boss and Enemy State Machines
Learn how to design enemies and boss fights using another clean state machine architecture — reusable, scalable, and perfect for creating a variety of AI behaviors.
Whether you’re just getting started with Unity or you’re ready to take your skills to the next level with real game systems, this course has everything you need to build a professional-quality 2D game — and the skills to keep going.
See you in the course!