Pracuję z animacjami w Unity i do tej pory stworzyłem tylko cztery (w górę w dół w lewo iw prawo), a moje okno animacji wygląda następująco ...
Problem polega na tym, że gdybym poruszał się w górę, chcę, aby bohater nadal patrzył w górę, nie przechodził na „neutralną bezczynność” (lub jakkolwiek zaczął), ale to oznacza, że mam 4 pozycje bezczynności ... i każda z nich może przejść w górę, w dół , W lewo lub w prawo i idą wykładniczo z każdą dodatkową akcją ...
Co sprawia, że mam wrażenie, że robię coś złego ...
Czy istnieje lepszy sposób na przejście między różnymi działaniami?
Odpowiedzi:
Tego rodzaju problem można rozwiązać za pomocą BlendTrees (ogólnie rozsądnym pomysłem jest często poleganie na drzewach mieszanych). Drzewo mieszania jest rodzajem stanu wielu animacji, który na podstawie parametru (parametrów pływających) decyduje, która z zawartych w nim animacji ma być aktualnie aktywna (lub alternatywnie uzyskana animacja może być mieszanką kilku animacji). Nawet jeśli animacje nie są mieszane, ale zamieniane, zamiana odbywa się w połowie animacji (tj. Jeśli animacja „wychodzenia” wynosi 35%, nowa jest odtwarzana od 35% do przodu). Z „zewnątrz” wszystko to jest ukryte, jakby to był jeden prosty / pojedynczy stan.
Na przykład masz drzewo mieszania z 8 animacjami duszka (bezczynne z 4 głównymi i 4 ukośnymi kierunkami). Drzewo mieszania ma dwa parametry - „poziomy” i „pionowy”. Na podstawie tych 2 parametrów drzewo mieszania zdecyduje, w którą animację grać. W oparciu o parametr „poziomy” drzewo mieszania wybierze między lewą / prawą animacją a parametr „pionowy” zadecyduje o animacji góra / dół. Następnie po połączeniu będziesz mieć wszystkie 8 animacji z przekątnymi (ten sam pomysł kryje się za joypadami / joystickami).
To trochę mylące, więc nawet jeśli StackExchange nie lubi linków, zamieszczę link do mojego krótkiego przykładowego filmu . Zwróć uwagę na prawą górną część ekranu. Szare kropki to „stany” / animacje, a aktywna to ta, która zamyka się z czerwoną kropką. Jak powiedziano na początku, może być jeszcze bardziej złożona, a każda animacja ma wpływ / siłę zależną od odległości do czerwonej kropki, co powoduje połączenie kilku animacji.
Z zewnątrz jest tylko jeden stan (drzewo mieszania), a kiedy zastosujesz tę samą koncepcję do chodzenia i ataku, będziesz mieć połączone tylko 3 stany.
Drzewa mieszania są tworzone prawym przyciskiem myszy na pustym obszarze Animatora Utwórz stan -> Z nowego drzewa mieszania. Stamtąd wszystko jest w Inspektorze. Po wybraniu drzewa mieszania możesz wybrać typ drzewa mieszania (1D, 2D itp.), Dodać animacje, ustawić je (względem wartości parametrów) i wybrać parametry sterujące.
Jeśli chcesz uzyskać więcej informacji o drzewach mieszania, zobacz filmy z Unity - Unite 2016 i samouczki Unity .
źródło
Problem polega na tym, że próbujesz powiązać wszystko ze sobą zamiast używać wyzwalacza do przełączania między biegami jałowymi. Powinieneś wybierać animację bezczynności za pomocą warunkowego typu if-else lub przełącznika. Stworzyłem schemat, który wygląda na znacznie ładniejszy (załóżmy, że jeden z nich jest domyślnym przypadkiem):
Dodatkowe informacje:
Rzuć okiem na parametry animacji, w jaki sposób ustawić parametry rozpoznawania animatora, automaty stanów do łączenia animacji, automaty stanów , aby sprawdzić ustawione zmienne.
źródło