Tydzień temu zajęliśmy się ożywianiem patyczaka i wprawianiem go w ruch w Unity. Pomyślałem sobie, że warto byłoby pójść o krok dalej. Może by tak rozbudować zakres ruchów bohatera i nauczyć go czegoś nowego? W tym artykule uczymy się jak skakać w Unity!
Modyfikacje modelu w Blenderze
Aby nasza postać mogła unieść się w powietrze, trzeba wrócić do Blendera i dodać tam odpowiednią animację. Otwórz nasz ostatni projekt i bierzemy się za modyfikacje.
Przyspieszanie kroku i animacja skoku
Pewnie zauważyłeś ostatnio, że nasz patyczak dość wolno się porusza. To jest dobry moment, żeby pokazać jak to poprawić. Przejdź do zakładki, w której definiowałeś animację i przesuń kadry tak, aby ilość klatek była zmniejszona o połowę. Następnie postaraj się zdefiniować kolejne odpowiadające za animację skoku.
W rezultacie po uruchomieniu animacji powinieneś otrzymać efekt zbliżony do mojego.
Modyfikacja postaci w Unity
Ustawienie klatek
Po przygotowaniu modelu w Blenderze, otwórz ostatni projekt z Unity. Będziesz musiał podmienić model bohatera na nowy. Zacznij od usunięcia starego pliku, zaznacz go w obszarze Assetów i kliknij PPM -> Delete. W kolejnym kroku dodaj nowy plik wygenerowany przez Blendera. Jeżeli nie pamiętasz jak to zrobić, zerknij tutaj. Przez to, że zmieniłeś klatki odpowiadające za animację pozycji swobodnej i ruchu w modelu, musisz zmodyfikować je również w projekcie Unity. Zmień Idle, Move i dodaj nowy, odpowiadające za animację skoku.
U mnie wygląda to w następujący sposób:
– Idle – klatki od 10 do 20;
– Move – klatki od 23 do 104 z zaznaczoną opcją loop;
– Jump – klatki od 110 do 170 z zaznaczoną opcją loop.
Edycja animatora
Dodałeś nową animację, musisz więc zdefiniować dla niej przejścia w Animatorze. Przejdź do odpowiedniej zakładki i dodaj animację Jump, dokładnie tak samo jak realizowaliśmy to tydzień temu. Żeby zdefiniować kiedy nastąpi moment skoku, będzie potrzebna nowa zmienna. Ja zdefiniowałem ją jako typ Int i nazwałem ją jump.
Pamiętaj, że skacze się z pozycji Idle oraz Move, dlatego będą potrzebne 4 relacje:
– Idle -> Jump
– Jump -> Idle
– Move -> Jump
– Jump -> Move
Zerknij w jaki sposób zdefiniowałem je ja, korzystając ze zmiennych move oraz jump.
Po dodaniu relacji powinieneś otrzymać widok dwukierunkowych relacji między trzema stanami, zobacz.
Skyptujemy
Na koniec zostawiłem modyfikacje skryptu Animation. Jest on odpowiedzialny za animację postaci (znajdziesz go w poprzednim wpisie). Dziś dodasz do niego fragment odpowiedzialny za skok, który aktywuje się po wciśnięciu spacji.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Animation : MonoBehaviour
{
//Animator podpięty do obiektu
private Animator anim;
//kontroler postaci podpięty do obiektu
private CharacterController controller;
void Start () {
//przypisanie kontrolera postaci do zmiennej
controller = GetComponent <CharacterController>();
//przypisanie animatora do zmiennej
anim = gameObject.GetComponentInChildren<Animator>();
}
void Update (){
//warunek wciśnięcia strzałki 'góra' lub 'dół'
if (Input.GetKey ("up") || Input.GetKey ("down")) {
//nadanie zmiennej 'move' wartości 1 gdy spełnia warunek
anim.SetInteger ("move", 1);
} else {
//nadanie zmiennej 'move' wartości 0 gdy nie spełnia warunku
anim.SetInteger ("move", 0);
}
if (Input.GetKey (KeyCode.Space)) {
//nadanie zmiennej 'jump' wartości 1 gdy spełnia warunek
anim.SetInteger ("jump", 1);
} else {
//nadanie zmiennej 'jump' wartości 0 gdy nie spełnia warunku
anim.SetInteger ("jump", 0);
}
}
}
Testujemy!
Kiedy jest już wszystko przygotowane, jedyne co pozostaje zrobić, to dodanie postaci do gry. Przeciągnij ją na obszar świata, a skrypty i kontrolery powinny dodać się automatycznie. Przed uruchomieniem gry możesz sprawdzić czy wszystko poprawnie się załadowało. W związku z tym wybierz postać z listy obiektów świata i zweryfikuj ustawienia postaci. Spróbuj zwiększyć prędkość bohatera z 1 na 2 i zobacz jak wpłynie to na szybkość ruchu. 🙂
Jeśli podążałeś według moich wskazówek, w rezultacie powinieneś móc poruszać patyczakiem i skakać przy pomocy spacji. Sprawdź!
To już jest koniec, możemy iść
To już niestety wszystko w tym artykule. Mam nadzieję, że pomogłem i zachęciłem Cię do eksperymentowania z Blenderem oraz Unity. Być może masz już swoje pierwsze efekty nauki, koniecznie pochwal się nimi w komentarzu! 🙂
Dziękuję Ci za poświęcony czas
Jeżeli chcesz być na bieżąco z artykułami i jesteś ciekawy co będzie dalej, daj lajka na naszym profilu FB, a przede wszystkim zapisz się do newslettera! Spodobał Ci się artykuł? Może zaciekawią Cię inne wpisy na naszym blogu.
Pozdrawiam i życzę miłego dnia! 🙂