Unity Mecanim Hvordan spille animasjon på tastetrykk

Mecanim er et statsdrevet verktøy for Unity som gir utviklere avansert animasjonskontroll og en funksjonsrik editor.

Fremtredende funksjoner ved Mecanim er animasjonsblanding og animasjonsretargeting.

Animasjonsblanding er en automatisk prosess for å lage jevne overganger mellom animasjoner.

Animasjonsretargeting er en prosess for å ombruke eksisterende animasjoner til å fungere mellom flere karakterrigger, noe som eliminerer behovet for å lage nye animasjoner for hver nye karakter.

I denne opplæringen vil jeg vise hvordan du animerer en kube og spiller animasjonen på tastetrykk med Mecanim.

Trinn

For å animere en kube i Unity, følg trinnene nedenfor:

  • Lag ny kube (GameObject -> 3D-objekt -> Cube)

  • Velg Cube og åpne deretter Animasjon-vinduet (Vindu -> Animasjon -> Animasjon)
  • I animasjonsvinduet klikker du på "Create", som vil lage en ny animasjon, en ny animatorkontroller og knytte en animatorkomponent til kuben.
  • Gi den nye animasjonen et navn "SpinAnimation"

  • I animasjonsvinduet klikker du på AddProperty -> Transform -> Rotation
  • Denne animasjonen vil ha 2 rammer, start og slutt.
  • For det første bildet setter vi rotasjon til (0, 0, 0)

  • For det siste bildet setter vi rotasjon til (0, 360, 0)

Animasjonen er klar.

Tips: For å lage flere animasjoner, klikk ganske enkelt på animasjonsnavnet i animasjonsvinduet og klikk deretter på "Create new Clip...".

For å sette opp Mecanim Animator Controller, følg trinnene nedenfor:

  • Dobbeltklikk på Animator Controller-elementet som ble opprettet med animasjonen

  • Nytt vindu med tittelen "Animator" vil vises, som skal se omtrent slik ut:

  • Du vil legge merke til at det er en pil som peker fra "Entry" til "SpinAnimation", som betyr at animasjonen vil spille så snart scenen starter, men det er ikke det vi vil, vi vil bare spille av animasjon ved tastetrykk.

Siden Mecanim krever å ha en inngangsanimasjon, er det vi kan gjøre å opprette en ny tom tilstand og gjøre den til en oppføring:

  • Høyreklikk på Animator-vinduet -> Opprett tilstand -> Tomt:

  • Velg Entry state -> Høyreklikk på den -> Set StateMachine Default State, og pek deretter på "New State":

Det siste som gjenstår å gjøre er å gjøre en overgang til SpinAnimation, men vi vil bare gjøre overgangen når den spesifikke betingelsen er oppfylt, det er da Parameters Tab kommer på plass:

  • Klikk på Parameters-fanen i Animator-vinduet og klikk deretter på (+)-symbolet:

Du vil legge merke til at det er flere tilgjengelige typer, men foreløpig velger vi Utløser, den ligner på bool, men i motsetning til bool, blir den automatisk satt til usann når animasjonen er fullført, nyttig for one-shot animasjoner:

  • Gi parameteren et navn "spinTrigger"

  • Velg til slutt "Any State" -> Høyreklikk på den -> Gjør overgang, og pek deretter på SpinAnimation:

  • Klikk på overgangspilen og i Inspektørvisning under Betingelser klikk (+) og sørg for at spinTrigger-parameteren er valgt

  • Som standard har animasjoner opprettet med Unity sløyfe aktivert, men siden vi bare ønsker å spille animasjon én gang, er det vi trenger å gjøre å velge animasjonsklippet i prosjektvisningen og deretter fjerne merket for sløyfetid:

For å kunne kontrollere Mecanim-parametere fra et skript, må vi bruke spesielle funksjoner, sjekk koden nedenfor:

  • Lag et nytt skript, kall det "AnimationTest", fjern alt fra det og lim inn 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");
        }
    }
}
  • Legg ved AnimationTest.cs-skript til Cube med Animator-komponent:

La oss nå teste det:

Sharp Coder Videospiller

Alt fungerer som forventet, ved å trykke på Q spilles animasjonen av.

Foreslåtte artikler
Bygge et interaktivt menysystem i Unity
Hvordan importere animasjoner til Unity
Unity Cinemachine og tidslinjeopplæring
Hvordan male trær på terreng i enhet
Hvordan velge riktig bakgrunnsmusikk for spillet ditt i Unity
Må-ha generelle eiendeler for enhet
Hvordan lage et FNAF-inspirert spill i Unity