Strona główna Unity Jak skakać w Unity?

Jak skakać w Unity?

przez Krzysiu Weiss
0 komentarze 3,1K wizyt

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

W rezultacie po uruchomieniu animacji powinieneś otrzymać efekt zbliżony do mojego.

Blender skok

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

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

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ę
5 1 vote
Oceny

Powiązane wpisy

Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments

Strona wykorzystuje cookies i przetwarza dane zgodnie z zasadami opublikowanymi w Polityce Prywatności. Jeżeli nie wyrażasz zgody na przetwarzanie danych, zmień ustawienia swojej przeglądarki. Wybierając "OK", zgadzasz się na warunki przetwarzania. OK Więcej