Unity

How to Create a Simple 2D Platformer Game in Unity

How to Create a Simple 2D Platformer Game in Unity

Content:

Unity is a powerful and popular game engine that allows you to create games for various platforms. In this tutorial, we will learn how to create a simple 2D platformer game in Unity. We will cover the following topics:

  • Setting up the project and importing assets
  • Creating the player and the enemies
  • Adding physics and collision detection
  • Implementing the user interface and the game logic
  • Building and testing the game

Setting up the project and importing assets

First, we need to create a new project in Unity. Open Unity Hub and click on the New button. Give your project a name, such as “2D Platformer”, and select the 2D template. Click on the Create button to create the project.

Next, we need to import some assets that we will use for the game. You can download the assets from [this link] or use your own assets. To import the assets, go to Assets > Import Package > Custom Package and select the downloaded package. Click on the Import button to import the assets.

You should see a folder called “2D Platformer Assets” in your Project window. This folder contains the sprites, animations, sounds, and fonts that we will use for the game.

Creating the player and the enemies

Now, we need to create the player and the enemies for the game. To create the player, go to GameObject > 2D Object > Sprite and name it “Player”. Drag and drop the “Player” sprite from the assets folder to the Sprite Renderer component of the player object. You should see the player in the Scene view.

To make the player move, we need to add some components to the player object. Select the player object and click on the Add Component button. Add the following components:

  • Rigidbody 2D: This component allows the player to be affected by physics and gravity. Set the Body Type to Dynamic and the Gravity Scale to 3.
  • Box Collider 2D: This component allows the player to collide with other objects. Adjust the Size and Offset values to fit the player sprite.
  • Animator: This component allows the player to have animations. Drag and drop the “Player” animator controller from the assets folder to the Controller slot of the animator component.

To create the enemies, we will follow a similar process. Create two new sprite objects and name them “Enemy1” and “Enemy2”. Drag and drop the “Enemy1” and “Enemy2” sprites from the assets folder to the Sprite Renderer components of the enemy objects. Add the Rigidbody 2D, Box Collider 2D, and Animator components to the enemy objects. Drag and drop the “Enemy1” and “Enemy2” animator controllers from the assets folder to the Controller slots of the animator components.

Adding physics and collision detection

To make the game more realistic and fun, we need to add some physics and collision detection to the game. We will use the Physics 2D and the Collision 2D components to achieve this.

To make the player jump, we need to add some code to the player object. Create a new C# script and name it “PlayerController”. Drag and drop the script to the player object. Double-click on the script to open it in Visual Studio. Replace the code with the following code:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // Variables to store the components
    private Rigidbody2D rb;
    private Animator anim;

    // Variables to store the input values
    private float horizontal;
    private bool jump;

    // Variables to store the parameters
    public float speed = 5f;
    public float jumpForce = 10f;
    public LayerMask groundLayer;

    // Start is called before the first frame update
    void Start()
    {
        // Get the components
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        // Get the input values
        horizontal = Input.GetAxis("Horizontal");
        jump = Input.GetButtonDown("Jump");

        // Flip the sprite according to the input direction
        if (horizontal < 0)
        {
            transform.localScale = new Vector3(-1, 1, 1);
        }
        else if (horizontal > 0)
        {
            transform.localScale = new Vector3(1, 1, 1);
        }

        // Set the animation parameters
        anim.SetFloat("Speed", Mathf.Abs(horizontal));
        anim.SetBool("Jump", !IsGrounded());
    }

    // FixedUpdate is called once per physics update
    void FixedUpdate()
    {
        // Move the player horizontally
        rb.velocity = new Vector2(horizontal * speed, rb.velocity.y);

        // Make the player jump if the input is pressed and the player is on the ground
        if (jump && IsGrounded())
        {
            rb.AddForce(new Vector2(0, jumpForce), ForceMode2D.Impulse);
        }
    }

    // A method to check if the player is on the ground
    bool IsGrounded()
    {
        // Cast a ray downwards from the center of the player
        RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.down, 1f, groundLayer);

        // Return true if the ray hits something, false otherwise
        return hit.collider != null;
    }
}

This code defines some variables to store the components, the input values, and the parameters. It also defines some methods to control the movement, the jumping, the flipping, and the animation of the player. Save the script and go back to Unity.

To make the enemies move, we need to add some code to the enemy objects. Create a new C# script and name it “EnemyController”. Drag and drop the script to the enemy objects. Double-click on the script to open it in Visual Studio. Replace the code with the following code:

using UnityEngine;

public class EnemyController : MonoBehaviour
{
    // Variables to store the components
    private Rigidbody2D rb;
    private Animator anim;

    // Variables to store the parameters
    public float speed = 3f;
    public float patrolDistance = 5f;

    // Variables to store the state
    private bool facingRight = true;
    private float initialPosition;

    // Start is called before the first frame update
    void Start()
    {
        // Get the components
        rb = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();

        // Get the initial position
        initialPosition = transform.position.x;
    }

    // Update is called once per frame
    void Update()
    {
        // Set the animation parameter
        anim.SetFloat("Speed", Mathf.Abs(rb.velocity.x));
    }

    // FixedUpdate is called once per physics update
    void FixedUpdate()
    {
        // Move the enemy horizontally
        rb.velocity = new Vector2(speed, rb.velocity.y);

        // Flip the enemy if it reaches the patrol distance
        if (transform.position.x > initialPosition + patrolDistance && facingRight)
        {
            Flip();
        }
        else if (transform.position.x < initialPosition - patrolDistance && !facingRight)
        {
            Flip();
        }
    }

    // A method to flip the enemy
    void Flip()
    {
        // Toggle the facing direction
        facingRight = !facingRight;

        // Flip the sprite
        transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
    }
}

This code defines some variables to store the components, the parameters, and the state. It also defines some methods to control the movement, the flipping, and the animation of the enemy. Save the script and go back to Unity.

To make the player and the enemies interact, we need to add some code to detect the collision between them. Create a new C# script and name it “CollisionController”. Drag and drop the script to the player object. Double-click on the script to open it in Visual Studio. Replace the code with the following code:

using UnityEngine;
using UnityEngine.SceneManagement;

public class CollisionController : MonoBehaviour
{
    // A method to handle the collision with other objects
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // If the player collides with an enemy
        if (collision.gameObject.CompareTag("Enemy"))
        {
            // Get the contact point
            ContactPoint2D contact = collision.GetContact(0);

            // If the player hits the enemy from above
            if (contact.normal.y > 0)
            {
                // Destroy the enemy
                Destroy(collision.gameObject);
            }
            else
            {
                // Restart the game
                SceneManager.LoadScene(SceneManager.GetActiveScene().name);
            }
        }
    }
}

This code defines a method to handle the collision with other objects. It checks if the player collides with an enemy and determines the contact point. If the player hits the enemy from above, it destroys the enemy. Otherwise, it restarts the game. Save the script and go back to Unity.


21 thoughts on “How to Create a Simple 2D Platformer Game in Unity

  1. I wanted to thank you for this great read!! I certainly loved every little bit of it.
    I’ve got you book marked to look at new stuff you

  2. PillsZem says:

    TruePills, No prescription needed, Buy pills without restrictions. Money Back Guaranteed 30-day refunds.

    Trial ED Pack consists of the following ED drugs:
    Viagra Active Ingredient: Sildenafil 100mg 5 pills
    Cialis 20mg 5 pills
    Levitra 20mg 5 pills

    https://cutt.ly/7wC5m1Id
    http://alt1.toolbarqueries.google.com.au/url?q=https://true-pill.top/
    http://carservice.bizsolutions.ru/bitrix/redirect.php?goto=https://true-pill.top/
    https://marus.market/bitrix/redirect.php?goto=https://true-pill.top/
    https://en.youscribe.com/Account/Login/LogOn?returnUrl=http%3A%2F%2Ftrue-pill.top&register=False
    https://marketplace.andalusiastarnews.com/AdHunter/Andalusia/Home/EmailFriend?url=https://true-pill.top/

    Diurapid
    Cliovelle
    Ramifin
    Proseda
    Seroxat
    Naprovite
    Clarithromycine
    Raniclorh
    Bendex-400
    D-worm
    Lifin
    Jumex
    Dipazide
    Memorit
    Laproton
    Rostil
    Lipizim
    Gastrium
    Clonistada
    Arudein
    Chondron dexa
    Zuef-o
    Ondomet
    Oxactin
    Plumarol
    Brisair accuhaler
    Rozidal
    Parizac
    Divarius
    Inipomp
    Co-careldopa
    Tozaar
    Bloxanth
    Celcoxx
    Atidem
    Eritro
    Bronmycin
    Enala-q comp
    Loxaryl
    Danazolum

  3. 3D_waEt says:

    3D моделирование и печать металлических изделий в Москве
    услуги печати металлом https://www.3d-pechtmet.ru .

  4. Wonderful article! This is the kind of information that are supposed to be shared around the internet.
    Disgrace on the search engines for not positioning this put up upper!
    Come on over and seek advice from my web site . Thanks =)

  5. Статистика использования многофакторной аутентификации
    vpn kz vpn kz .

  6. Mike Dyson says:

    Hi

    This is Mike Dyson

    Let me show you our latest research results from our constant SEO feedbacks that we have from our plans:

    https://www.strictlydigital.net/product/semrush-backlinks/

    The new Semrush Backlinks, which will make your farazinassets.com SEO trend have an immediate push.
    The method is actually very simple, we are building links from domains that have a high number of keywords ranking for them. 

    Forget about the SEO metrics or any other factors that so many tools try to teach you that is good. The most valuable link is the one that comes from a website that has a healthy trend and lots of ranking keywords.
    We thought about that, so we have built this plan for you

    Check in detail here:
    https://www.strictlydigital.net/product/semrush-backlinks/

    Cheap and effective

    Try it anytime soon

    Regards
    Mike Dyson

    [email protected]

  7. Hi there,

    I have reviewed your domain in MOZ and have observed that you may benefit from an increase in authority.

    Our solution guarantees you a high-quality domain authority score within a period of three months. This will increase your organic visibility and strengthen your website authority, thus making it stronger against Google updates.

    Check out our deals for more details.
    https://www.monkeydigital.co/domain-authority-plan/

    NEW: Ahrefs Domain Rating
    https://www.monkeydigital.co/ahrefs-seo/

    Thanks and regards
    Mike Archibald

  8. This service is perfect for boosting your local business’ visibility on the map in a specific location.

    We provide Google Maps listing management, optimization, and promotion services that cover everything needed to rank in the Google 3-Pack.

    More info:
    https://www.speed-seo.net/ranking-in-the-maps-means-sales/

    Thanks and Regards
    Mike Oldridge

    PS: Want a ONE-TIME comprehensive local plan that covers everything?
    https://www.speed-seo.net/product/local-seo-bundle/

  9. Mike Hawkins says:

    Hi there

    Just checked your farazinassets.com baclink profile, I noticed a moderate percentage of toxic links pointing to your website

    We will investigate each link for its toxicity and perform a professional clean up for you free of charge.

    Start recovering your ranks today:
    https://www.hilkom-digital.de/professional-linksprofile-clean-up-service/

    Regards
    Mike Hawkins
    Hilkom Digital SEO Experts
    https://www.hilkom-digital.de/

  10. Mike Scott says:

    This service is perfect for boosting your local business’ visibility on the map in a specific location.

    We provide Google Maps listing management, optimization, and promotion services that cover everything needed to rank in the Google 3-Pack.

    More info:
    https://www.speed-seo.net/ranking-in-the-maps-means-sales/

    Thanks and Regards
    Mike Scott

    PS: Want a ONE-TIME comprehensive local plan that covers everything?
    https://www.speed-seo.net/product/local-seo-bundle/

  11. Mike Gilson says:

    Hello

    I have just verified your SEO on farazinassets.com for its SEO metrics and saw that your website could use an upgrade.

    We will improve your ranks organically and safely, using only state of the art AI and whitehat methods, while providing monthly reports and outstanding support.

    More info:
    https://www.digital-x-press.com/unbeatable-seo/

    Regards
    Mike Gilson

    Digital X SEO Experts

  12. best_yfpl says:

    Must-Have for Nomads
    Upgrade Your RV Experience with the Best Solar Generator
    solar generator with 50 amp rv outlet http://www.rv4sol-gen.com .

  13. best_awst says:

    The Ultimate Solar Power Solution for RVs
    best solar generator for rv air conditioner https://argener-rv4.ru .

  14. 3d_xcsl says:

    Выбираем 3D принтер по металлу: цена и производительность
    3d принтер по металлу цена 3d принтер по металлу цена .

  15. Hi there

    Just checked your farazinassets.com baclink profile, I noticed a moderate percentage of toxic links pointing to your website

    We will investigate each link for its toxicity and perform a professional clean up for you free of charge.

    Start recovering your ranks today:
    https://www.hilkom-digital.de/professional-linksprofile-clean-up-service/

    Regards
    Mike Wainwright
    Hilkom Digital SEO Experts
    https://www.hilkom-digital.de/

  16. Mike Derrick says:

    Hi

    This is Mike Derrick

    Let me present you our latest research results from our constant SEO feedbacks that we have from our plans:

    https://www.strictlydigital.net/product/semrush-backlinks/

    The new Semrush Backlinks, which will make your farazinassets.com SEO trend have an immediate push.
    The method is actually very simple, we are building links from domains that have a high number of keywords ranking for them. 

    Forget about the SEO metrics or any other factors that so many tools try to teach you that is good. The most valuable link is the one that comes from a website that has a healthy trend and lots of ranking keywords.
    We thought about that, so we have built this plan for you

    Check in detail here:
    https://www.strictlydigital.net/product/semrush-backlinks/

    Cheap and effective

    Try it anytime soon

    Regards
    Mike Derrick

    [email protected]

  17. Mike Coleman says:

    Hi

    I have just checked farazinassets.com for its SEO metrics and saw that your website could use a boost.

    We will improve your ranks organically and safely, using only state of the art AI and whitehat methods, while providing monthly reports and outstanding support.

    More info:
    https://www.digital-x-press.com/unbeatable-seo/

    Regards
    Mike Coleman

    Digital X SEO Experts

  18. Hi there,

    My name is Mike from Monkey Digital,

    Allow me to present to you a lifetime revenue opportunity of 35%
    That’s right, you can earn 35% of every order made by your affiliate for life.

    Simply register with us, generate your affiliate links, and incorporate them on your website, and you are done. It takes only 5 minutes to set up everything, and the payouts are sent each month.

    Click here to enroll with us today:
    https://www.monkeydigital.org/affiliate-dashboard/

    Think about it,
    Every website owner requires the use of search engine optimization (SEO) for their website. This endeavor holds significant potential for both parties involved.

    Thanks and regards
    Mike Mansfield

    Monkey Digital

  19. Ryliegal says:

    Navigating the complexities of web-based schools in Alaska can actually be a challenge, especially if you're a newcomer to the concept. I, too, faced these doubts but realized that these online platforms deliver first-rate, complete educational experience that matches usual brick-and-mortar schools.

    Beginning from the rough landscapes of Juneau to the dynamic ambiance of Anchorage, Alaska's online schools offer innumerable learning opportunities that can be adjustable and handy. The snow-filled winters no longer restrict a person's ability to access education and learning. Modern technology rendered it possible to follow education within the warmth and coziness of your residence.

    Adaptability is a noteworthy plus. You can modify your schedules as per your commitments, that is especially helpful for workers or those with household responsibilities. Furthermore, the courses provided are broad, embracing a wide variety of subjects. From introductory basics to in-depth specialties, there's something for everyone.

    Alaska's online schools feature well-qualified teachers, active learning techniques, and encouraging peer networks, creating a fulfilling fulfilling educational journey. If you've been considering enrolling, I advise you to take that leap and delve into Alaska's ground-breaking online education. Find out more about this innovative method to learning and how exactly it can maybe change your career and education trajectory. http://www.onlineschoolAK10.com

  20. Hi there

    This is Mike Williams

    Let me introduce to you our latest research results from our constant SEO feedbacks that we have from our plans:

    https://www.strictlydigital.net/product/semrush-backlinks/

    The new Semrush Backlinks, which will make your farazinassets.com SEO trend have an immediate push.
    The method is actually very simple, we are building links from domains that have a high number of keywords ranking for them. 

    Forget about the SEO metrics or any other factors that so many tools try to teach you that is good. The most valuable link is the one that comes from a website that has a healthy trend and lots of ranking keywords.
    We thought about that, so we have built this plan for you

    Check in detail here:
    https://www.strictlydigital.net/product/semrush-backlinks/

    Cheap and effective

    Try it anytime soon

    Regards
    Mike Williams

    [email protected]

  21. Mike Cramer says:

    Hi there,

    I have reviewed your domain in MOZ and have observed that you may benefit from an increase in authority.

    Our solution guarantees you a high-quality domain authority score within a period of three months. This will increase your organic visibility and strengthen your website authority, thus making it stronger against Google updates.

    Check out our deals for more details.
    https://www.monkeydigital.co/domain-authority-plan/

    NEW: Ahrefs Domain Rating
    https://www.monkeydigital.co/ahrefs-seo/

    Thanks and regards
    Mike Cramer

Leave a Reply

Your email address will not be published. Required fields are marked *