Oprettelse af 2D-animationer i Unity

For at skabe 2D-animationer i Unity kan udviklere bruge det indbyggede animationsvindue og Unity Animator-komponenten. Her er en trin-for-trin guide til at komme i gang.

Opsætning af projektet

  • Åbn Unity og opret et nyt 2D-projekt eller åbn et eksisterende.
  • Hvis du starter et nyt projekt, skal du indstille projektets skabelon som 2D.

Import af Sprite-aktiver

  • Sprites kan oprettes inden for Unity ved at bruge Sprite Editor eller importeres fra eksterne billedfiler såsom PNG eller JPEG.
  • For at oprette sprites inden for Unity, gå til menuen Assets, vælg Opret og vælg enten Sprite eller Sprite Renderer. Det er derefter muligt at tegne eller importere sprite-kunstværket.

Konfiguration af Sprite Animation

  • Når sprites er klar, skal du vælge sprite-aktivet i projektvinduet.
  • I Inspector-vinduet skal du sørge for, at Texture Type er indstillet til 'Sprite (2D and UI)'. Hvis ikke, skal du ændre det til 'Sprite (2D and UI)'.
  • Klik på sprite-aktivet i projektvinduet for at åbne det i Sprite-editoren.
  • Brug Sprite Editor til at definere de individuelle frames af animationen. Spriten kan om nødvendigt opdeles i flere underbilleder. Editoren tillader også at ændre pivotpunktet for hver frame for at kontrollere spritens position.
  • Gem ændringerne i Sprite Editor.

Oprettelse af animationer ved hjælp af animationsvinduet

  • For at åbne Animation-vinduet skal du gå til 'Window -> Animation'.
  • I animationsvinduet skal du klikke på knappen Opret for at oprette et nyt animationsklip.
  • Vælg animationsklippet i projektvinduet, og dets egenskaber vises i inspektørvinduet.
  • I Inspector-vinduet er det muligt at indstille animationsklippets længde, samplingsfrekvens og andre egenskaber.
  • For at oprette keyframes skal du flytte afspilningshovedet i Animation-vinduet til en bestemt tid og ændre spritens egenskaber (f.eks. position, skala, rotation osv.) i Scene- eller Hierarki-vinduet.
  • Tilføj keyframes på forskellige tidspunkter for at skabe en jævn animation. Unity interpolerer automatisk værdierne mellem keyframes.

Opsætning af Animator

  • Vælg sprite-objektet i vinduet Scene eller Hierarki.
  • I Inspector-vinduet skal du klikke på knappen Tilføj Component og søge efter "Animator" for at tilføje Animator-komponenten til objektet.
  • Klik på knappen Opret i Animator-komponenten for at oprette et nyt Animator Controller-aktiv.
  • Tildel den nyoprettede Animator Controller til Animator-komponentens Controller-felt.

Konfiguration af Animator-controlleren

  • Dobbeltklik på det nyoprettede Animator Controller-aktiv for at åbne det i Animator-vinduet.
  • I Animator-vinduet er der en Animator Controller-graf, som repræsenterer strømmen af ​​animationer.
  • Højreklik i Animator-vinduet, og vælg 'Create State -> From New Clip' eller 'From Sprite Renderer' for at oprette animationstilstande.
  • Træk og slip de tidligere oprettede animationsklip i animationsvinduet til de respektive animationstilstande.
  • Opret overgange mellem animationstilstande ved at klikke på en tilstand og trække pilen til en anden tilstand. Det er muligt at justere betingelserne for overgang, såsom tid, parameterværdier eller hændelser.
  • Det er muligt at tilføje parametre for at styre overgangene, såsom bools, ints eller triggere. For eksempel kan der være en bool-parameter ved navn "IsRunning", der udløser en overgang fra en inaktiv animationstilstand til en kørende animationstilstand.

Afspilning af animationerne

  • Vælg sprite-objektet i vinduet Scene eller Hierarki.
  • I Animator-komponenten i Inspector-vinduet skal du trække det oprettede Animator Controller-aktiv over i Controller-feltet.
  • Tryk på knappen Play i Animation-vinduet for at teste og se animationerne.

Programmering af animationer

  • Programmæssig styring af animationer kræver adgang til Animator-komponenten fra script.
  • I scriptet skal du oprette en variabel af typen Animator og bruge 'GetComponent<Animator>()' for at få en reference til Animator-komponenten knyttet til sprite-objektet.
  • Det er muligt derefter at bruge animatorens funktioner og egenskaber til at udløse overgange, indstille parameterværdier eller styre afspilningen af ​​animationerne. For eksempel vil kald af animatoren.SetBool("IsRunning", true) udløse den kørende animation.
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;
    }
}

Konklusion

Dette er en grundlæggende oversigt over oprettelse af 2D-animationer i Unity ved hjælp af de indbyggede værktøjer. Unity understøtter også mere avancerede teknikker som brug af sprite-ark, invers kinematik (IK) og scripting af tilpasset animation adfærd. Udforsk disse muligheder baseret på de specifikke krav og kompleksiteten af ​​de pågældende animationer.