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.