Unity

Första stegen

Skapa en spelkaraktär i Unity

I denna guide går vi igenom hur du skapar en spelkaraktär med rörelser och animationer i Unity, steg för steg.


Steg 1 – Importera sprites

Börja med att importera ditt sprite sheet. I denna guide används Frog från Pixel Adventure 1.

unity2.png unity3.png unity4.png


Steg 2 – Skapa spelaren och marken

Markera huvud spriten till jump idle och run och ställ in Pixel per unit till 32 och tryck på apply på dem annars blir de väldigt små. unity8.png

Du behöver även klicka på sprite editor och dela upp ( slicea) spriten. ställ in Type till grid by size och 32 tryck på slice och sedan på apply. unity9.png

  1. Öppna din scen och högerklicka i Hierarchy
  2. Välj 2D Object → Sprite och döp det till Player
    • Sätt spriten till Idle 01 från ditt sprite sheet
  3. Högerklicka igen i Hierarchy och välj 2D Object → Sprite
    • Döp det till Ground och sätt spriten till en Square-sprite
    • Skala och placera det som en mark i scenen

unity1.png


Steg 3 – Lägg till animationer

Skapa tre animationer för spelaren. Markera Player i Hierarchy och öppna Animation-fönstret (Window → Animation → Animation).

Skapa följande animationer:

Animation Beskrivning
Idle Stillastående
Run Springer
Jump Hoppar

För varje animation:

  1. Klicka på Create och ge den rätt namn
  2. Dra in rätt sprite-frames från Project-vyn till tidslinjen

unity5.png unity6.png


Steg 4 – Sätt upp Animator-regler

Öppna Animator-fönstret (Window → Animation → Animator) och skapa övergångar mellan animationerna.

Lägg till följande Parameters:

Parameter Typ
speed Float
isGrounded Bool

Skapa övergångarna:

  • Idle → Run – när speed är större än 0.1
  • Run → Idle – när speed är mindre än 0.1
  • Idle/Run → Jump – när isGrounded är false
  • Jump → Idle – när isGrounded är true

unity7.png

💡 Kom ihåg att avmarkera Can Transition To Self och Has Exit Time på övergångarna för smidigare animationer.


Steg 5 – Lägg till komponenter på spelaren

Markera Player i Hierarchy och lägg till följande komponenter i Inspector:

  • Rigidbody 2D – hanterar fysik och gravitation
  • Capsule Collider 2D (eller Box Collider 2D) – spelarens kollisionsyta
  • Animator – kopplas automatiskt om du skapade animationerna på spelaren

Steg 6 – Sätt upp lager (Layers)

För att hoppa ska fungera behöver spelaren veta vad som är mark.

  1. Klicka på Ground i Hierarchy
  2. Uppe till höger i Inspector, klicka på Layer → Add Layer
  3. Skapa ett nytt lager som heter Ground
  4. Tilldela Ground-lagret till ditt markblock

⚠️ Se till att Player inte har Ground-lagret, annars kan den känna av sig själv som mark.

unity11.png unity12.png

Steg 7 – Lägg till scriptet

  1. Skapa ett nytt C#-script och kalla det PlayerMovement
  2. Ersätt innehållet med scriptet nedan
  3. Dra scriptet till Player i Hierarchy
using UnityEngine;
using UnityEngine.InputSystem;

// Hanterar spelarens rörelse, hopp och animation
public class PlayerMovement : MonoBehaviour {
    [SerializeField] private LayerMask groundLayer; // Lagret som räknas som mark

    // Komponenter som hämtas från samma GameObject
    private Rigidbody2D body;
    private Collider2D coll;
    private Animator anim;
    private SpriteRenderer sprite;

    // Hämtar referenser till komponenter när objektet skapas
    void Awake() {
        body = GetComponent<Rigidbody2D>();
        coll = GetComponent<Collider2D>();
        anim = GetComponent<Animator>();
        sprite = GetComponent<SpriteRenderer>();
    }

    // Körs varje bildruta – hanterar input, rörelse och hopp
    void Update() {
        float moveInput = 0; // -1 för vänster, 1 för höger, 0 för stillastående
        var keyboard = Keyboard.current;

        if (keyboard != null) {
            // Gå höger/vänster
            if (keyboard.leftArrowKey.isPressed) {
                moveInput = -1;
                sprite.flipX = true; // Vänder gubben åt vänster
            } else if (keyboard.rightArrowKey.isPressed) {
                moveInput = 1;
                sprite.flipX = false; // Vänder gubben åt höger
            }

            // Håller in mellanslag för att springa, annars normal gånghastighet
            float currentSpeed = keyboard.spaceKey.isPressed ? 8f : 5f;
            body.linearVelocity = new Vector2(moveInput * currentSpeed, body.linearVelocity.y);

            // Hoppa
            if (keyboard.upArrowKey.wasPressedThisFrame && IsGrounded()) {
                body.linearVelocity = new Vector2(body.linearVelocity.x, 10f);
            }
        }

        // Uppdatera Animatorn
        anim.SetFloat("speed", Mathf.Abs(body.linearVelocity.x));
        anim.SetBool("isGrounded", IsGrounded());
    }

    // Kontrollerar om spelaren står på marken med en BoxCast nedåt
    public bool IsGrounded() {
        return Physics2D.BoxCast(coll.bounds.center, coll.bounds.size * 0.9f, 0f, Vector2.down, 0.1f, groundLayer);
    }
}

Steg 8 – Bind Ground Layer till scriptet

⚠️ Detta är ett vanligt misstag – glöm inte detta steg!

  1. Markera Player i Hierarchy
  2. Hitta PlayerMovement-scriptet i Inspector
  3. Klicka på Ground Layer-fältet och välj ditt Ground-lager

unity10.png


Klart! 🎉

Nu ska din karaktär kunna:

  • ⬅️ ➡️ Röra sig åt vänster och höger med piltangenterna
  • ⬆️ Hoppa med uppåtpilen
  • 🏃 Springa med mellanslag