Work in progress
The content of this page was not yet updated for Godot
4.2
and may be outdated. If you know how to improve this page or you can confirm
that it's up to date, feel free to open a pull request.
Scena gracza i akcje wejścia¶
W ciągu następnych dwóch lekcji zaprojektujemy scenę gracza, zarejestrujemy swoje własne akcje wejściowe i zakodujemy poruszanie się gracza. Na koniec będziesz mieć postać, którą można grać i porusza się w ośmiu kierunkach.
Utwórz nową scenę, przechodząc do menu Scena w lewym górnym rogu i klikając Nowa scena.
Utwórz węzeł CharacterBody3D ustawiając go jako węzeł główny (węzeł korzenia kompozycji - root)
Nazwij węzeł CharacterBody3D Gracz
. Obiekty typu ciało-postaci (character body) są uzupełnieniem planszy i sztywnych brył (rigid bodies) używanych w samouczku gry 2D. Podobnie jak sztywne bryły, mogą się poruszać i zderzać z otoczeniem, ale zamiast być kontrolowane przez silnik fizyczny, ty decydujesz o ich ruchu. Zrozumiesz, jak wykorzystujemy unikalne funkcje węzła, kodując mechanikę skoków i zgniatania.
Zobacz także
Aby dowiedzieć się więcej o różnych typach węzłów z fizyką, zobacz Przedstawienie podstaw fizyki.
Na razie stworzymy podstawowy zestaw dla naszej postaci 3D. Umożliwi nam to późniejsze obrócenie modelu za pomocą kodu podczas odtwarzania animacji.
Dodaj węzeł Node3D jako element podrzędny Player
i nazwij go Pivot
Następnie w doku FileSystem rozwiń folder art/
, klikając go dwukrotnie, a następnie przeciągnij i upuść player.glb
na Pivot
.
To powinno utworzyć instancję modelu będącego dzieckiem Pivot
. Możesz zmienić jego nazwę na Character
.
Informacja
Pliki .glb
zawierają dane sceny 3D oparte na specyfikacji open source GLTF 2.0. Są one nowoczesną, pełną możliwości alternatywą dla zastrzeżonego formatu, takiego jak FBX, który Godot również obsługuje. Aby stworzyć te pliki, zaprojektowaliśmy model w Blender 3D i wyeksportowaliśmy go do GLTF.
Podobnie jak w przypadku wszystkich rodzajów węzłów fizyki, potrzebujemy kształtu kolizji, aby nasza postać mogła zderzać się z otoczeniem. Wybierz ponownie węzeł Player
i dodaj węzeł potomny CollisionShape3D. W Inspektorze, we właściwości Shape (kształt), dodaj nowy węzeł typu SphereShape3D.
Siatka sfery pojawia się pod postacią.
Będzie to kształt używany przez silnik fizyki przy zderzania się z otoczeniem, więc chcemy, aby lepiej pasował do modelu 3D. Zmniejsz ją nieco, przeciągając pomarańczową kropkę w widoku rzutni. Nasza kula ma promień około 0,8
metra.
Następnie przesuń kształt w górę, tak aby jego dolna część z grubsza pokrywała się z płaszczyzną siatki.
Możesz zmienić widoczność modelu, klikając ikonę oka obok węzłów Character
lub Pivot
.
Zapisz scenę jako player.tscn
Mając gotowe węzły, możemy już prawie rozpocząć kodowanie. Ale najpierw musimy zdefiniować kilka akcji wejściowych.
Tworzenie akcji wejściowych¶
Aby poruszać postacią, będziemy sprawdzać dane wejściowe, takie jak naciskanie klawiszy strzałek. W Godocie moglibyśmy napisać wszystkie powiązania klawiszy w kodzie, ale istnieje potężny system, który pozwala przypisać etykietę do zestawu klawiszy i przycisków. Upraszcza to nasze skrypty i czyni je bardziej czytelnymi.
Ten system to mapa wejściowa (Input Map). Aby uzyskać dostęp edytora mapy, przejdź do menu Projekt i wybierz Ustawienia projektu.
U góry znajduje się wiele zakładek. Kliknij na Input Map. To okno umożliwia dodawanie nowych akcji u góry. W dolnej części można przypisać klawisze do tych akcji.
Projekty w Godot dostarczane są z pewnymi predefiniowanymi akcjami przeznaczonymi do projektowania interfejsu użytkownika, które moglibyśmy tutaj wykorzystać. My jednak definiujemy własne, by wspierać pady do gier.
Nazwiemy nasze akcje move_left
, move_right
, move_forward
, move_back
i jump
.
Aby dodać akcję, wpisz jej nazwę na pasku u góry i naciśnij Enter.
Utwórz pięć następujących akcji:
Aby powiązać klawisz lub przycisk z akcją, kliknij przycisk "+" po jego prawej stronie. Zrób to dla move_left
. Naciśnij klawisz strzałki w lewo i kliknij OK.
Powiąż również klawisz A z akcją move_left
.
Dodajmy teraz obsługę lewego joysticka gamepada. Ponownie kliknij przycisk "+", ale tym razem wybierz Manual Selection -> Joypad Axes.
Wybierz ujemną oś X lewego joysticka.
Pozostaw pozostałe wartości domyślne i naciśnij OK
Informacja
Jeśli chcesz, aby kontrolery miały różne akcje wejściowe, powinieneś użyć opcji Urządzenia w Opcjach Dodatkowych. Urządzenie 0 odpowiada pierwszemu podłączonemu gamepadowi, urządzenie 1 odpowiada drugiemu podłączonemu gamepadowi itd.
Zrób to samo dla innych akcji wejściowych. Na przykład, przypisz strzałkę w prawo, D i dodatnią oś lewego joysticka do move_right
. Po przypisaniu wszystkich klawiszy interfejs powinien wyglądać następująco.
Ostatnią akcją do skonfigurowania jest akcja skok
. Powiąż klawisz spacji i przycisk A gamepada.
Sterowanie dla akcji skoku powinno wyglądać następująco.
To wszystkie akcje, których potrzebujemy w tej grze. Możesz użyć tego menu do oznaczenia dowolnych grup klawiszy i przycisków w swoich projektach.
W następnej części zakodujemy i przetestujemy ruchy gracza.