Skip to content Skip to sidebar Skip to footer

Widget HTML #1

Learn to create advance Side scroller game with Unity & C#

Learn to create advance Side scroller game with Unity & C#

 Learn how to create your very own 2D RPG game for mobile or PC using Unity2D, an industry-standard program used by many large gaming studios ...

Enroll Now

Creating an advanced side-scroller game with Unity and C# is an exciting endeavor that combines creativity with technical skill. Side-scrollers are games where the player moves horizontally across the screen, often with jumping, shooting, and other interactive elements. This guide will walk you through the essential steps and components needed to build an advanced side-scroller game using Unity and C#.

Step 1: Setting Up Your Project

  1. Install Unity Hub and Unity Editor: Download and install Unity Hub from the Unity website. Through Unity Hub, you can install the Unity Editor, which is the main tool you'll use to create your game. Make sure to choose a version that is compatible with the latest features and updates.

  2. Create a New Project: Open Unity Hub, click on the 'New' button, and select the 2D template. Name your project and choose a location to save it. This will set up your project with the basic settings optimized for 2D game development.

Step 2: Import Assets

  1. Sprites and Animations: Import sprites for your characters, enemies, background, and other elements. You can create these assets yourself using software like Photoshop or GIMP, or you can find free and paid assets on websites like the Unity Asset Store.

  2. Audio: Import sound effects and music that will enhance your game's atmosphere. These can be found online or created using tools like Audacity.

  3. Prefab Creation: Create prefabs for reusable elements like platforms, enemies, and power-ups. Prefabs are templates that you can instantiate multiple times in your game.

Step 3: Create the Player Character

  1. Character Controller: Create a new GameObject and name it "Player". Add a Sprite Renderer component and assign your player sprite. Next, add a Rigidbody2D component for physics interactions and a BoxCollider2D component for collision detection.

  2. Scripting the Player Movement:

    • Create a new C# script called PlayerController.cs and attach it to the Player GameObject.
    • Open the script and add the following code to handle player movement:
    using UnityEngine; public class PlayerController : MonoBehaviour { public float moveSpeed = 5f; public float jumpForce = 10f; private Rigidbody2D rb; private bool isGrounded; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { Move(); Jump(); } void Move() { float moveInput = Input.GetAxis("Horizontal"); rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y); } void Jump() { if (Input.GetButtonDown("Jump") && isGrounded) { rb.velocity = new Vector2(rb.velocity.x, jumpForce); } } void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("Ground")) { isGrounded = true; } } void OnCollisionExit2D(Collision2D collision) { if (collision.gameObject.CompareTag("Ground")) { isGrounded = false; } } }

Step 4: Design Levels

  1. Tilemaps: Use Unity's Tilemap system to create levels. Tilemaps allow you to paint levels using a grid of tiles. To do this, create a new Tilemap by right-clicking in the Hierarchy and selecting 2D Object > Tilemap.

  2. Design Layout: Design your levels by painting tiles on the Tilemap. You can create different layers for the ground, background, and interactive elements.

  3. Prefabs and Environment: Place prefabs like platforms and enemies in your scene. Ensure they have appropriate colliders and scripts attached to them.

Step 5: Enemy AI and Interaction

  1. Basic Enemy AI: Create a simple enemy with a patrolling behavior. For instance, you can create a script called EnemyController.cs:

    using UnityEngine; public class EnemyController : MonoBehaviour { public float speed = 2f; public Transform[] points; private int currentPointIndex = 0; void Update() { Move(); } void Move() { Transform targetPoint = points[currentPointIndex]; transform.position = Vector2.MoveTowards(transform.position, targetPoint.position, speed * Time.deltaTime); if (Vector2.Distance(transform.position, targetPoint.position) < 0.1f) { currentPointIndex = (currentPointIndex + 1) % points.Length; } } }
  2. Interaction: Ensure that the player can interact with enemies (e.g., taking damage or defeating them). Use colliders and trigger events to handle these interactions.

Step 6: Adding Advanced Features
  1. Power-Ups and Collectibles: Add power-ups that grant the player temporary abilities, such as increased speed or invincibility. Create a script for power-ups:

    using UnityEngine; public class PowerUp : MonoBehaviour { public float duration = 5f; void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { StartCoroutine(Pickup(other)); } } IEnumerator Pickup(Collider2D player) { PlayerController controller = player.GetComponent<PlayerController>(); controller.moveSpeed *= 2; GetComponent<SpriteRenderer>().enabled = false; GetComponent<Collider2D>().enabled = false; yield return new WaitForSeconds(duration); controller.moveSpeed /= 2; Destroy(gameObject); } }
  2. Checkpoints and Saving Progress: Implement checkpoints where the player can respawn after dying. Create a simple checkpoint script:

    using UnityEngine; public class Checkpoint : MonoBehaviour { private Vector2 checkpointPosition; void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { checkpointPosition = transform.position; } } public Vector2 GetCheckpointPosition() { return checkpointPosition; } }
  3. Parallax Scrolling: To add depth to your game, implement parallax scrolling for the background. This gives the illusion of depth by moving background layers at different speeds:

    using UnityEngine; public class Parallax : MonoBehaviour { public float parallaxEffect; private float length, startpos; void Start() { startpos = transform.position.x; length = GetComponent<SpriteRenderer>().bounds.size.x; } void Update() { float temp = (Camera.main.transform.position.x * (1 - parallaxEffect)); float dist = (Camera.main.transform.position.x * parallaxEffect); transform.position = new Vector3(startpos + dist, transform.position.y, transform.position.z); if (temp > startpos + length) startpos += length; else if (temp < startpos - length) startpos -= length; } }

Step 7: Polishing Your Game

  1. User Interface: Create a user interface (UI) for your game, including health bars, score counters, and menus. Use Unity's UI system to create and manage these elements.

  2. Sound and Music: Add background music and sound effects to enhance the gameplay experience. Ensure that these sounds trigger at appropriate times and adjust their volumes for balance.

  3. Testing and Debugging: Thoroughly test your game to find and fix bugs. Ensure that the game runs smoothly and that all features work as intended.

Step 8: Building and Deployment

  1. Build Settings: Configure your build settings by going to File > Build Settings. Choose the target platform for your game (e.g., PC, mobile).

  2. Build the Game: Click on the Build button to create an executable version of your game. Test the built version to ensure it runs correctly.

  3. Distribution: Distribute your game through platforms like Steam,, or mobile app stores. Consider creating a marketing plan to promote your game and reach a wider audience.


Building an advanced side-scroller game with Unity and C# involves a combination of programming, design, and creativity. By following these steps, you can create a game that is engaging and enjoyable for players. Remember to iterate on your design, gather feedback, and continuously improve your game. Happy developing!