Lage 2D-animasjoner i Unity

For å lage 2D-animasjoner i Unity, kan utviklere bruke det innebygde animasjonsvinduet og Unity Animator-komponenten. Her er en steg-for-steg guide for å komme i gang.

Sette opp prosjektet

  • Åpne Unity og opprett et nytt 2D-prosjekt eller åpne et eksisterende.
  • Hvis du starter et nytt prosjekt, setter du prosjektets mal som 2D.

Importerer Sprite-ressurser

  • Spritene kan opprettes innen Unity ved å bruke Sprite Editor eller importeres fra eksterne bildefiler som PNG eller JPEG.
  • For å lage sprites innenfor Unity, gå til Assets-menyen, velg Create, og velg enten Sprite eller Sprite Renderer. Det er da mulig å tegne eller importere sprite-kunstverket.

Konfigurere Sprite Animation

  • Når sprites er klare, velg sprite-elementet i prosjektvinduet.
  • I Inspektør-vinduet, sørg for at Texture Type er satt til 'Sprite (2D and UI)'. Hvis ikke, endre den til 'Sprite (2D and UI)'.
  • Klikk på sprite-elementet i prosjektvinduet for å åpne det i Sprite Editor.
  • Bruk Sprite Editor til å definere de individuelle frames for animasjonen. Spriten kan deles opp i flere underbilder om nødvendig. Editoren tillater også å endre pivotpunktet for hver ramme for å kontrollere posisjonen til spriten.
  • Lagre endringene som er gjort i Sprite Editor.

Opprette animasjoner ved hjelp av animasjonsvinduet

  • For å åpne animasjonsvinduet, gå til 'Window -> Animation'.
  • I animasjonsvinduet klikker du på Opprett-knappen for å lage et nytt animasjonsklipp.
  • Velg animasjonsklippet i prosjektvinduet, og egenskapene vil vises i inspektørvinduet.
  • I Inspector-vinduet er det mulig å angi animasjonsklippets lengde, samplingsfrekvens og andre egenskaper.
  • For å lage nøkkelbilder, flytt avspillingshodet i animasjonsvinduet til en spesifikk tid og endre spritens egenskaper (f.eks. posisjon, skala, rotasjon osv.) i Scene- eller Hierarki-vinduet.
  • Legg til nøkkelbilder til forskjellige tider for å lage en jevn animasjon. Unity vil automatisk interpolere verdiene mellom nøkkelbildene.

Sette opp The Animator

  • Velg sprite-objektet i Scene- eller Hierarki-vinduet.
  • I Inspector-vinduet klikker du på knappen Legg til Component og søk etter "Animator" for å legge til Animator-komponenten til objektet.
  • Klikk på Opprett-knappen i Animator-komponenten for å opprette et nytt Animator Controller-element.
  • Tilordne den nyopprettede Animator-kontrolleren til Animator-komponentens kontroller-felt.

Konfigurering av Animator-kontrolleren

  • Dobbeltklikk på det nyopprettede Animator Controller-elementet for å åpne det i Animator-vinduet.
  • I Animator-vinduet er det en Animator Controller-graf, som representerer flyten av animasjoner.
  • Høyreklikk i Animator-vinduet og velg 'Create State -> From New Clip' eller 'From Sprite Renderer' for å opprette animasjonstilstander.
  • Dra og slipp de tidligere opprettede animasjonsklippene i animasjonsvinduet til de respektive animasjonstilstandene.
  • Lag overganger mellom animasjonstilstander ved å klikke på en tilstand og dra pilen til en annen tilstand. Det er mulig å justere betingelsene for overgang, for eksempel tid, parameterverdier eller hendelser.
  • Det er mulig å legge til parametere for å kontrollere overgangene, for eksempel bools, ints eller triggere. For eksempel kan det være en bool-parameter kalt "IsRunning" som utløser en overgang fra en inaktiv animasjonstilstand til en kjørende animasjonstilstand.

Spiller The Animations

  • Velg sprite-objektet i Scene- eller Hierarki-vinduet.
  • I Animator-komponenten i Inspector-vinduet drar du det opprettede Animator Controller-elementet til Controller-feltet.
  • Trykk på Play-knappen i animasjonsvinduet for å teste og forhåndsvise animasjonene.

Kontrollere animasjoner programmatisk

  • Å kontrollere animasjoner programmatisk krever tilgang til Animator-komponenten fra script.
  • I skriptet oppretter du en variabel av typen Animator og bruker 'GetComponent<Animator>()' for å få en referanse til Animator-komponenten knyttet til sprite-objektet.
  • Det er mulig å deretter bruke Animatorens funksjoner og egenskaper til å utløse overganger, angi parameterverdier eller kontrollere avspillingen av animasjonene. Hvis du for eksempel kaller animatoren.SetBool("IsRunning", true) vil den kjørende animasjonen utløses.
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;
    }
}

Konklusjon

Dette er en grunnleggende oversikt over å lage 2D-animasjoner i Unity ved å bruke de innebygde verktøyene. Unity støtter også mer avanserte teknikker som bruk av sprite-ark, invers kinematikk (IK) og skripting av tilpasset animasjon atferd. Utforsk disse alternativene basert på de spesifikke kravene og kompleksiteten til de aktuelle animasjonene.

Foreslåtte artikler
Hvordan lage et mobilspill i Unity
Hvordan lage terreng i enhet
Lage et Ludo-spill i Unity
Hvordan lage et quizspill i Unity
Hvordan lage et 2D-spill som Super Mario i Unity
Hvordan lage et overlevelsesspill i Unity
Hvordan lage et nytt C#-skript i Unity