Skapa 2D-animationer i Unity

För att skapa 2D-animationer i Unity kan utvecklare använda det inbyggda animeringsfönstret och Unity Animator-komponenten. Här är en steg-för-steg-guide för att komma igång.

Att sätta upp projektet

  • Öppna Unity och skapa ett nytt 2D-projekt eller öppna ett befintligt.
  • Om du startar ett nytt projekt, ställ in projektets mall som 2D.

Importera Sprite-tillgångar

  • Sprites kan skapas inom Unity genom att använda Sprite Editor eller importeras från externa bildfiler som PNG eller JPEG.
  • För att skapa sprites inom Unity, gå till menyn Tillgångar, välj Skapa och välj antingen Sprite eller Sprite Renderer. Det är sedan möjligt att rita eller importera spritekonstverket.

Konfigurera Sprite Animation

  • När sprites är redo, välj sprite-tillgången i projektfönstret.
  • Se till att texturtypen är inställd på 'Sprite (2D and UI)' i inspektörsfönstret. Om inte, ändra det till 'Sprite (2D and UI)'.
  • Klicka på sprite-tillgången i projektfönstret för att öppna den i Sprite Editor.
  • Använd Sprite Editor för att definiera de individuella bildrutorna i animationen. Spriten kan delas upp i flera underbilder om det behövs. Redaktören gör det också möjligt att ändra pivotpunkten för varje bildruta för att kontrollera spritens position.
  • Spara ändringarna i Sprite Editor.

Skapa animationer med hjälp av animeringsfönstret

  • Öppna animeringsfönstret genom att gå till 'Window -> Animation'.
  • I animeringsfönstret klickar du på knappen Skapa för att skapa ett nytt animeringsklipp.
  • Välj animeringsklippet i projektfönstret, så visas dess egenskaper i inspektörsfönstret.
  • I Inspector-fönstret är det möjligt att ställa in animeringsklippets längd, samplingsfrekvens och andra egenskaper.
  • För att skapa nyckelbildrutor, flytta spelhuvudet i animeringsfönstret till en specifik tid och ändra spritens egenskaper (t.ex. position, skala, rotation, etc.) i Scen- eller Hierarkifönstret.
  • Lägg till nyckelbildrutor vid olika tidpunkter för att skapa en smidig animering. Unity kommer automatiskt att interpolera värdena mellan nyckelbildrutorna.

Konfigurera Animator

  • Välj sprite-objektet i scen- eller hierarkifönstret.
  • I inspektörsfönstret klickar du på knappen Lägg till Komponent och sök efter "Animator" för att lägga till Animator-komponenten till objektet.
  • Klicka på knappen Skapa i Animator-komponenten för att skapa en ny Animator Controller-tillgång.
  • Tilldela den nyskapade Animator Controller till Animator-komponentens Controller-fält.

Konfigurera Animator Controller

  • Dubbelklicka på den nyskapade Animator Controller-tillgången för att öppna den i Animator-fönstret.
  • I Animator-fönstret finns en Animator Controller-graf, som representerar flödet av animationer.
  • Högerklicka i Animator-fönstret och välj 'Create State -> From New Clip' eller 'From Sprite Renderer' för att skapa animeringslägen.
  • Dra och släpp de tidigare skapade animationsklippen i animeringsfönstret till respektive animeringsläge.
  • Skapa övergångar mellan animationslägen genom att klicka på ett läge och dra pilen till ett annat läge. Det är möjligt att justera villkoren för övergång, såsom tid, parametervärden eller händelser.
  • Det är möjligt att lägga till parametrar för att styra övergångarna, såsom bools, ints eller triggers. Till exempel kan det finnas en bool-parameter med namnet "IsRunning" som utlöser en övergång från ett ledigt animationsläge till ett körande animationsläge.

Spelar animationerna

  • Välj sprite-objektet i scen- eller hierarkifönstret.
  • I Animator-komponenten i Inspector-fönstret, dra den skapade Animator Controller-tillgången till fältet Controller.
  • Tryck på knappen Spela upp i animeringsfönstret för att testa och förhandsgranska animationerna.

Styra animationer programmerat

  • Att styra animationer programmatiskt kräver åtkomst till Animator-komponenten från skriptet.
  • Skapa en variabel av typen Animator i skriptet och använd 'GetComponent<Animator>()' för att få en referens till Animator-komponenten kopplad till sprite-objektet.
  • Det är möjligt att sedan använda Animatorns funktioner och egenskaper för att utlösa övergångar, ställa in parametervärden eller styra uppspelningen av animationerna. Om du till exempel anropar animatorn.SetBool("IsRunning", true) kommer den pågående animeringen att utlösas.
using UnityEngine;

public class AnimationController : MonoBehaviour
{
    private Animator animator;

    private void Start()
    {
        // Get a reference to the Animator component
        animator = GetComponent<Animator>();
    }

    private void Update()
    {
        // Check for input or condition to trigger animations
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Trigger a jump animation
            animator.SetTrigger("Jump");
        }

        float moveInput = Input.GetAxis("Horizontal");
        animator.SetFloat("Speed", Mathf.Abs(moveInput));

        // Check if the character is grounded
        bool isGrounded = IsGrounded();

        // Set the "IsGrounded" parameter in the Animator
        animator.SetBool("IsGrounded", isGrounded);

        if (isGrounded && Input.GetKeyDown(KeyCode.C))
        {
            // Trigger a crouch animation
            animator.SetBool("IsCrouching", true);
        }

        if (isGrounded && Input.GetKeyUp(KeyCode.C))
        {
            // Stop the crouch animation
            animator.SetBool("IsCrouching", false);
        }
    }

    private bool IsGrounded()
    {
        // Implement your own logic to check if the character is grounded
        // For example, you can use raycasting or collision detection
        // and return true if the character is touching the ground
        // and false otherwise.
        return false;
    }
}

Slutsats

Det här är en grundläggande översikt över att skapa 2D-animationer i Unity med de inbyggda verktygen. Unity stöder också mer avancerade tekniker som att använda sprite-ark, invers kinematics (IK) och skriptanpassade animations beteenden. Utforska dessa alternativ baserat på de specifika kraven och komplexiteten hos animationerna i fråga.

Föreslagna artiklar
Skapa ett Screamer-spel i Unity
Skapa ett Poppy Playtime-inspirerat spel i Unity
Skapa ett mobilt skräckspel i Unity
Skapa ett ludospel i Unity
Skapa ett enkelt plattformsspel i Unity
Hur man tilldelar en kamera till ett skript i Unity
Upptäck porten till gränslös kreativitet med Unity