Unity Mecanim Sådan spiller du animation på tastetryk

Mecanim er et tilstandsdrevet værktøj til Unity, der giver udviklere avanceret animationskontrol og en funktionsrig editor.

Fremtrædende træk ved Mecanim er animationsblanding og animationsretargeting.

Animationsblanding er en automatisk proces til at lave jævne overgange mellem animationer.

Animation-retargeting er en proces, hvor man genbruger eksisterende animationer, så de fungerer mellem flere karakterrigs, hvilket eliminerer behovet for at skabe nye animationer for hver ny karakter.

I denne tutorial vil jeg vise, hvordan man animerer en terning og spiller animationen på tastetryk med Mecanim.

Trin

Følg nedenstående trin for at animere en terning i Unity:

  • Opret ny terning (GameObject -> 3D Object -> Cube)

  • Vælg Cube og åbn derefter Animation-vinduet (Vindue -> Animation -> Animation)
  • Klik på "Create" i Animation-vinduet, hvilket vil oprette en ny animation, en ny Animator-controller og vedhæfte en Animator-komponent til kuben.
  • Navngiv den nye animation "SpinAnimation"

  • Klik på Tilføj egenskab -> Transformer -> Rotation i animationsvinduet
  • Denne animation vil have 2 frames, start og slut.
  • For det første billede sætter vi rotation til (0, 0, 0)

  • For det sidste billede sætter vi rotation til (0, 360, 0)

Animationen er klar.

Tip: For at oprette flere animationer skal du blot klikke på animationsnavnet i animationsvinduet og derefter klikke på "Create new Clip...".

Følg nedenstående trin for at konfigurere Mecanim Animator Controller:

  • Dobbeltklik på Animator Controller-aktivet, der blev oprettet med animationen

  • Nyt vindue med titlen "Animator" vises, som skulle se sådan ud:

  • Du vil bemærke, at der er en pil, der peger fra "Entry" til "SpinAnimation", hvilket betyder, at animationen afspilles, så snart scenen starter, men det er ikke det, vi ønsker, vi vil kun afspille animationen ved tastetryk.

Da Mecanim kræver at have en indgangsanimation, hvad vi kan gøre, er at oprette en ny tom tilstand og gøre den til en indgang:

  • Højreklik på Animator-vinduet -> Opret tilstand -> Tom:

  • Vælg Entry state -> Højreklik på den -> Set StateMachine Default State, og peg derefter på "New State":

Den sidste ting, der er tilbage at gøre, er at lave en overgang til SpinAnimation, men vi ønsker kun at lave overgangen, når den specifikke betingelse er opfyldt, det er her, fanen Parameters kommer på plads:

  • Klik på fanen Parameters i Animator-vinduet, og klik derefter på symbolet (+):

Du vil bemærke, at der er flere tilgængelige typer, men indtil videre vælger vi Trigger, det ligner bool, men i modsætning til bool indstilles det automatisk til falsk, når animationen er færdig, hvilket er nyttigt til one-shot animationer:

  • Navngiv parameteren "spinTrigger"

  • Vælg til sidst "Any State" -> Højreklik på den -> Foretag overgang, og peg derefter på SpinAnimation:

  • Klik på overgangspilen og i Inspector View under Betingelser klik (+) og sørg for, at spinTrigger-parameteren er valgt

  • Som standard har animationer, der er oprettet med Unity, loop aktiveret, men da vi kun ønsker at afspille animation én gang, er det, vi skal gøre, at vælge animationsklippet i projektvisningen og derefter fjerne markeringen i afkrydsningsfeltet Loop Time:

For at kunne styre Mecanim-parametre fra et script, skal vi bruge specielle funktioner, tjek koden nedenfor:

  • Opret et nyt script, kald det "AnimationTest", fjern alt fra det, og indsæt derefter koden nedenfor i det:

AnimationTest.cs

using UnityEngine;

public class AnimationTest : MonoBehaviour
{

    Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        //Get Animator component
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //Play spin animation on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            animator.SetTrigger("spinTrigger");
        }
    }
}
  • Vedhæft AnimationTest.cs script til Cube med Animator-komponent:

Lad os nu teste det:

Sharp Coder Videoafspiller

Alt fungerer som forventet, ved at trykke på Q afspilles animationen.