Unity Mecanim Cum se redă animație la apăsarea tastelor

Mecanim este un instrument bazat pe stare pentru Unity care oferă dezvoltatorilor un control avansat al animației și un editor bogat în funcții.

Caracteristicile proeminente ale Mecanim sunt amestecarea animației și retargetingul animației.

Amestecarea animației este un proces automat de realizare a tranzițiilor fluide între animații.

Retargetingul animației este un proces de reutilizare a animațiilor existente pentru a funcționa între mai multe platforme de caractere, eliminând nevoia de a crea noi animații pentru fiecare personaj nou.

În acest tutorial, voi arăta cum să animați un cub și să redați animația la apăsarea tastelor cu Mecanim.

Pași

Pentru a anima un cub în Unity, urmați pașii de mai jos:

  • Creați un cub nou (GameObject -> Obiect 3D -> Cub)

  • Selectați Cub, apoi deschideți fereastra Animație (Fereastră -> Animație -> Animație)
  • În fereastra Animație faceți clic pe "Create", care va crea o nouă animație, un nou Controler Animator și va atașa o componentă Animator la Cub.
  • Denumiți noua animație "SpinAnimation"

  • În fereastra Animație faceți clic pe AddProperty -> Transform -> Rotation
  • Această animație va avea 2 cadre, început și sfârșit.
  • Pentru primul cadru, setăm rotația la (0, 0, 0)

  • Pentru ultimul cadru, setăm rotația la (0, 360, 0)

Animația este gata.

Sfat: Pentru a crea mai multe animații, faceți clic pe numele animației din fereastra Animație, apoi faceți clic pe "Create new Clip...".

Pentru a configura Mecanim Animator Controller, urmați pașii de mai jos:

  • Faceți dublu clic pe materialul Animator Controller care a fost creat odată cu animația

  • Va apărea o fereastră nouă intitulată "Animator", care ar trebui să arate cam așa:

  • Veți observa că există o săgeată care indică de la "Entry" la "SpinAnimation", ceea ce înseamnă că animația se va reda de îndată ce începe scena, dar nu asta ne dorim, vrem să redăm animația doar la apăsarea tastei.

Deoarece Mecanim necesită o animație de intrare, ceea ce putem face este să creăm o nouă stare de gol și să o facem o intrare:

  • Faceți clic dreapta pe fereastra Animator -> Creare stare -> Golire:

  • Selectați starea de intrare -> Faceți clic dreapta pe ea -> Setați starea implicită StateMachine, apoi indicați spre "New State":

Ultimul lucru care ne rămâne de făcut este să facem o tranziție la SpinAnimation, dar vrem să facem tranziția doar odată ce condiția specifică este îndeplinită, atunci când apare fila Parametri:

  • Faceți clic pe fila Parametri din fereastra Animator, apoi faceți clic pe simbolul (+):

Veți observa că există mai multe tipuri disponibile, dar pentru moment, vom selecta Trigger, este similar cu bool, dar spre deosebire de bool, este setat automat la fals odată ce animația este finalizată, util pentru animațiile one-shot.:

  • Denumiți parametrul "spinTrigger"

  • În sfârșit, selectați "Any State" -> Faceți clic dreapta pe el -> Faceți tranziție, apoi indicați spre SpinAnimation:

  • Faceți clic pe săgeata de tranziție și în Vizualizare inspector, sub Condiții, faceți clic pe (+) și asigurați-vă că parametrul spinTrigger este selectat

  • În mod implicit, animațiile create cu Unity au bucla activată, dar din moment ce vrem să redăm animație o singură dată, ceea ce trebuie să facem este să selectăm Clipul de animație din vizualizarea Proiect și apoi să debifați caseta de selectare Timp buclă:

Pentru a putea controla parametrii Mecanim dintr-un script, va trebui să folosim funcții speciale, verificați codul de mai jos:

  • Creați un nou script, numiți-l "AnimationTest", eliminați totul din el, apoi lipiți codul de mai jos în interiorul lui:

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");
        }
    }
}
  • Atașați scriptul AnimationTest.cs la Cube cu componenta Animator:

Acum hai să-l testăm:

Sharp Coder Video player

Totul funcționează conform așteptărilor, apăsând Q se redă animația.

Articole sugerate
Construirea unui sistem de meniu interactiv în Unity
Cum să importați animații în Unity
Tutorial Unity Cinemachine și Timeline
Cum să pictezi copaci pe teren în Unity
Cum să faci un joc inspirat de FNAF în Unity
Alegerea Skybox-ului potrivit pentru mediul dvs. în Unity
Strategii pentru a proteja Unity Games de piraterie