Przeczytaj
Podsumowanie
Aspekty, które należy uwzględnić, projektując funkcjonalność skoku postaci w grze tworzonej za pomocą silnikasilnika Unity Hub:
wykonanie skoku – jaki ruch postaci nazwiemy skokiem;
wysokość skoku;
sterowanie skokiem – w jaki sposób grający będzie wskazywał, że chce, by postać skoczyła;
miejsca, z których dozwolony jest skok – może on zostać zainicjowany jedynie, gdy gracz znajduje się na platformie, dlatego też trzeba zastanowić się, w jaki sposób program ma kontrolować położenie postaci.
Implementacja skoku postaci
Skok postaci w grze implementujemy za pomocą języka C#. Pracujemy w skrypcie, który odpowiedzialny jest za ruch postaci.
Wysokość skoku określamy za pomocą zmiennej typu float, której nadajemy atrybut SerializedField. Dzięki czemu będziemy mogli w obszarze Inspector okna programu Unity Hub regulować wysokość skoku, wpisując odpowiednie wartości.
Aby móc zmieniać wartość zmiennej w obszarze Inspector w oknie edytora Unity Hub, należy w skrypcie pisanym w języku C# dodać przed zmienną atrybut SerializedField.
Przypisanie czynności skoku do odpowiedniego klawisza
Chcemy, aby postać oddawała skok po wciśnięciu przez grającego przycisku spacji. Aby sprawdzić, czy klawisz został wciśnięty, używamy polecenia if, a jako argument podajemy Input.GetKey, w środku którego wpisujemy KeyCode.space. Ta część kodu uruchomi się tylko wtedy, gdy wciśnięta zostanie spacja.
Wykonanie skoku
Jednym ze sposobów na umożliwienie obiektowi skoku jest zmiana szybkości na osi y. Korzystamy tu ponownie z własności velocity ciała bohatera (analogicznie do ruchu lewo‑prawo implementowanego w pierwszym e‑materiale z seriipierwszym e‑materiale z serii). Tym razem pozostawiamy bez zmian parametr x, natomiast jako y wstawiamy zmienną skok.
Zdefiniowanie miejsca, z którego można wykonać skok
Aby gra działa poprawnie, należy powiązać możliwość wykonania skoku z miejscem, na którym znajduje się bohater – nie należy pozwalać na skok w sytuacji, gdy znajduje się on w powietrzu czy na skraju platformy itd.
Problem rozpoznania miejsca, w którym może dojść do skoku, rozwiążemy za pomocą funkcji BoxCast. Działa ona w ten sposób, że tworzy prostokąt (pudełko) we wskazanym miejscu i sprawdza, czy koliduje on z wybraną warstwą.
Przed implementacją funkcji BoxCast warto stworzyć nową warstwę dla platformy. W tym celu należy zaznaczyć obiekt platformy, następnie w obszarze Inspector z menu kontekstowego przy opcji Layer trzeba wybrać Add Layer. W kolejnym kroku nadaje się nazwę nowej warstwie.
Funkcja BoxCast przyjmuje różne parametry:
pozycja początku pudełka;
wymiary pudełka;
kąt obrotu pudełka;
kierunek przesunięcia;
odległość przesunięcia;
warstwa, z którą sprawdzana ma być kolizja.
Sprawdzamy kolizję postaci z platformą, więc tworzymy pudełko w miejscu, gdzie znajduje się bohater, a następnie przesuwamy je w stronę platformy, ustawiamy bardzo małą odległość między pudełkiem a platformą. Jeśli pudełko dotknie platformy, wnioskujemy, że bohater na niej stoi, a funkcja zwraca wartość: prawda.
Funkcja sprawdzającą, czy postać znajduje się na platformie, powinna zwracać wartość booleanboolean, czyli prawda lub fałsz.
W kolejnych częściach serii e‑materiałów o tworzeniu gry w Unity Hub stworzymy animacje, aby widać było, kiedy bohater stoi, porusza się, skacze bądź spada. Zaprogramujemy także ruch kamery, by śledziła ruchy postaci.
Celem gry jest pokonywanie poziomów, składających się z platform, na których gracz może się natknąć na przeszkody, przeciwników lup punktowane elementy. Aby gra była dla użytkownika wyzwaniem, potrzebne są nie tylko warunki wygranej, ale i zaprogramowanie sytuacji, w których gracz przegrywa. Kolejne e‑materiały będą poświęcone dodawaniu wspomnianych obiektów i funkcjonalności.
Słownik
(ang. aktywa) w środowiskach do tworzenia gier i modelowania 3d mianem assetów określa się zasoby, z których stworzony jest produkt – obrazki, animacje, pliki z kodem itp.
booleanbooleanlogiczny typ danych przyjmujący dwie wartości – prawda i fałsz.
okno o takiej nazwie w Unity zawiera listę każdego obiektu znajdującego się w bieżącej scenie
okno o takiej nazwie w Unity wyświetla szczegółowe informacje o aktualnie wybranym obiekcie, w tym o wszystkich dołączonych do niego komponentach
określa sposób renderowania powierzchni, poprzez dołączenie referencji do używanych przez nią tekstur, odcieni kolorów itp.
obiekt, który wraz ze wszystkimi komponentami, wartościami właściwości i „dziećmi” jest przechowywany jako zasób do wielokrotnego użytku
okno o takiej nazwie w Unity wyświetla wszystkie pliki związane z projektem i jest najlepszym miejscem do znajdowania zasobów i innych plików projektu w aplikacji
zintegrowane środowisko programistyczne stworzone dla osób projektujących gry komputerowe
struktura danych pozwalająca na przechowanie uporządkowanego zbioru elementów/obiektów danego typu
klasa Time służy do uzyskania informacji o czasie od Unity; dzięki tej klasie m.in. można uzyskać czas pomiędzy klatkami, czas jaki upłynął od rozpoczęcia gry