Unity Mecanim Hur man spelar animering på tangenttryckning

Mecanim är ett tillståndsdrivet verktyg för Unity som ger utvecklare avancerad animeringskontroll och en funktionsrik redigerare.

Framträdande egenskaper hos Mecanim är animationsblandning och animationsretargeting.

Animationsblandning är en automatisk process för att göra smidiga övergångar mellan animationer.

Ominriktning av animering är en process för att återanvända befintliga animationer för att fungera mellan flera karaktärsriggar, vilket eliminerar behovet av att skapa nya animationer för varje ny karaktär.

I den här handledningen kommer jag att visa hur man animerar en kub och spelar animeringen på tangenttryckning med Mecanim.

Steg

För att animera en kub i Unity, följ stegen nedan:

  • Skapa ny kub (GameObject -> 3D Object -> Cube)

  • Välj Cube och öppna sedan animeringsfönstret (Fönster -> Animation -> Animation)
  • I animeringsfönstret klickar du på "Create", vilket skapar en ny animering, en ny Animator Controller och kopplar en Animator-komponent till kuben.
  • Namnge den nya animationen "SpinAnimation"

  • I animeringsfönstret klickar du på AddProperty -> Transform -> Rotation
  • Denna animation kommer att ha 2 bildrutor, start och slut.
  • För den första bilden ställer vi in ​​rotation till (0, 0, 0)

  • För den sista bilden ställer vi in ​​rotation till (0, 360, 0)

Animationen är klar.

Tips: För att skapa fler animeringar klickar du helt enkelt på animationens namn i animeringsfönstret och klickar sedan på "Create new Clip...".

För att ställa in Mecanim Animator Controller, följ stegen nedan:

  • Dubbelklicka på Animator Controller-tillgången som skapades med animeringen

  • Ett nytt fönster med titeln "Animator" kommer att visas, som borde se ut ungefär så här:

  • Du kommer att märka att det finns en pil som pekar från "Entry" till "SpinAnimation", vilket betyder att animationen kommer att spelas så snart scenen startar, men det är inte vad vi vill, vi vill bara spela upp animering vid knapptryckning.

Eftersom Mecanim kräver att ha en ingångsanimation, vad vi kan göra är att skapa ett nytt tomt tillstånd och göra det till ett inträde:

  • Högerklicka på Animator-fönstret -> Skapa tillstånd -> Tom:

  • Välj Entry state -> Högerklicka på den -> Set StateMachine Default State, peka sedan på "New State":

Det sista som återstår att göra är att göra en övergång till SpinAnimation, men vi vill bara göra övergången när det specifika villkoret är uppfyllt, det är då Parameters Tab kommer på plats:

  • Klicka på fliken Parametrar i Animator-fönstret och klicka sedan på symbolen (+):

Du kommer att märka att det finns flera tillgängliga typer, men för närvarande väljer vi Trigger, det liknar bool men till skillnad från bool ställs det automatiskt in på false när animeringen är klar, användbart för engångsanimationer:

  • Namnge parametern "spinTrigger"

  • Välj slutligen "Any State" -> Högerklicka på den -> Gör övergång och peka sedan på SpinAnimation:

  • Klicka på övergångspilen och i inspektörsvyn under Villkor klicka på (+) och se till att parametern spinTrigger är vald

  • Som standard har animationer skapade med Unity loop aktiverat, men eftersom vi bara vill spela animering en gång, vad vi behöver göra är att välja animeringsklippet i projektvyn och sedan avmarkera kryssrutan Loop Time:

För att kunna styra Mecanim-parametrar från ett script kommer vi att behöva använda speciella funktioner, kolla koden nedan:

  • Skapa ett nytt skript, kalla det "AnimationTest", ta bort allt från det och klistra in koden nedan 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");
        }
    }
}
  • Bifoga AnimationTest.cs-skript till Cube med Animator-komponenten:

Nu ska vi testa det:

Sharp Coder Videospelare

Allt fungerar som förväntat, om du trycker på Q spelas animationen upp.

Föreslagna artiklar
Bygga ett interaktivt menysystem i Unity
Hur man målar träd på terräng i Unity
Hur man importerar animationer till Unity
Hur man gör ett FNAF-inspirerat spel i Unity
Hur man väljer rätt bakgrundsmusik för ditt spel i Unity
Guide till ljud i Unity
Unity Cinemachine och tidslinjehandledning