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.