Unity Mecanim Jak odtwarzać animację po naciśnięciu klawisza

Mecanim to narzędzie sterowane stanem dla Unity, które zapewnia programistom zaawansowaną kontrolę animacji i bogaty w funkcje edytor.

Najważniejszymi funkcjami Mecanim są łączenie animacji i retargeting animacji.

Mieszanie animacji to automatyczny proces tworzenia płynnych przejść między animacjami.

Retargeting animacji to proces zmiany przeznaczenia istniejących animacji tak, aby działały między wieloma platformami postaci, eliminując potrzebę tworzenia nowych animacji dla każdej nowej postaci.

W tym samouczku pokażę, jak animować kostkę i odtwarzać animację po naciśnięciu klawisza za pomocą Mecanim.

Kroki

Aby animować kostkę w Unity, wykonaj poniższe czynności:

  • Utwórz nową kostkę (GameObject -> Obiekt 3D -> Kostka)

  • Wybierz Kostkę, a następnie otwórz okno Animacja (Okno -> Animacja -> Animacja)
  • W oknie Animacja kliknij "Create", co spowoduje utworzenie nowej animacji, nowego kontrolera Animatora i dołączenie komponentu Animatora do kostki.
  • Nazwij nową animację "SpinAnimation"

  • W oknie animacji kliknij AddProperty -> Transform -> Rotation
  • Ta animacja będzie miała 2 klatki, początek i koniec.
  • Dla pierwszej klatki ustawiamy obrót na (0, 0, 0)

  • Dla ostatniej klatki ustawiamy obrót na (0, 360, 0)

Animacja jest gotowa.

Wskazówka: Aby utworzyć więcej animacji, po prostu kliknij nazwę animacji w oknie Animacja, a następnie kliknij "Create new Clip...".

Aby skonfigurować kontroler Mecanim Animator, wykonaj poniższe czynności:

  • Kliknij dwukrotnie zasób Animator Controller, który został utworzony wraz z animacją

  • Pojawi się nowe okno zatytułowane "Animator", które powinno wyglądać mniej więcej tak:

  • Zauważysz, że strzałka wskazuje od "Entry" do "SpinAnimation", co oznacza, że ​​animacja zostanie odtworzona natychmiast po rozpoczęciu Sceny, ale nie tego chcemy, chcemy odtwarzać animację tylko po naciśnięciu klawisza.

Ponieważ Mecanim wymaga animacji wejścia, możemy stworzyć nowy stan Pusty i uczynić go Wpisem:

  • Kliknij prawym przyciskiem myszy okno Animatora -> Utwórz stan -> Pusty:

  • Wybierz stan wejścia -> kliknij go prawym przyciskiem myszy -> Ustaw domyślny stan StateMachine, następnie wskaż "New State":

Ostatnią rzeczą do zrobienia jest przejście do SpinAnimation, ale chcemy to zrobić dopiero po spełnieniu określonego warunku, wtedy pojawia się zakładka Parametry:

  • Kliknij zakładkę Parametry w oknie Animatora, a następnie kliknij symbol (+):

Zauważysz, że dostępnych jest wiele typów, ale na razie wybierzemy Trigger, jest podobny do bool, ale w przeciwieństwie do bool, automatycznie ustawia się na false po zakończeniu animacji, przydatne w przypadku animacji jednorazowych:

  • Nazwij parametr "spinTrigger"

  • Na koniec wybierz "Any State" -> Kliknij prawym przyciskiem myszy -> Dokonaj przejścia, a następnie wskaż SpinAnimation:

  • Kliknij strzałkę przejścia i w widoku inspektora w obszarze Warunki kliknij (+) i upewnij się, że wybrany jest parametr spinTrigger

  • Domyślnie animacje utworzone za pomocą Unity mają włączoną pętlę, ale ponieważ chcemy odtworzyć animację tylko raz, musimy wybrać klip animacji w widoku projektu, a następnie usunąć zaznaczenie pola wyboru Czas pętli:

Aby móc sterować parametrami Mecanima ze skryptu będziemy musieli skorzystać ze specjalnych funkcji, sprawdź poniższy kod:

  • Utwórz nowy skrypt, nazwij go "AnimationTest", usuń z niego wszystko, a następnie wklej do niego poniższy kod:

Test animacji.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");
        }
    }
}
  • Dołącz skrypt AnimationTest.cs do kostki z komponentem Animator:

Teraz przetestujmy to:

Sharp Coder Odtwarzacz wideo

Wszystko działa zgodnie z oczekiwaniami, naciśnięcie Q odtwarza animację.

Sugerowane artykuły
Budowanie interaktywnego systemu menu w Unity
Jak importować animacje do Unity
Jak malować drzewa na terenie w Unity
Samouczek Unity Cinemachine i osi czasu
Jak stworzyć grę inspirowaną FNAF-em w Unity
Jak wybrać odpowiednią muzykę w tle do swojej gry w Unity
Niezbędne zasoby ogólnego przeznaczenia dla Unity