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.
![Blender skok](https://zaprogramujzycie.pl/wp-content/uploads/2020/09/Blender-jump.png)
W rezultacie po uruchomieniu animacji powinieneś otrzymać efekt zbliżony do mojego.
![Blender skok](https://zaprogramujzycie.pl/wp-content/uploads/2020/09/Blender-skok.gif)
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.
![Unity - animator skok](https://zaprogramujzycie.pl/wp-content/uploads/2020/09/Unity-animator-jump.png)
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ź!
![Unity skok](https://zaprogramujzycie.pl/wp-content/uploads/2020/09/Unity-jump.gif)
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! 🙂
![dziękuję](https://zaprogramujzycie.pl/wp-content/uploads/2020/07/dziekuje-1280x640.png)