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.

image0

Utwórz węzeł CharacterBody3D ustawiając go jako węzeł główny (węzeł korzenia kompozycji - root)

../../_images/add_character_body3D.webp

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

../../_images/adding_node3D.webp

Następnie w doku FileSystem rozwiń folder art/, klikając go dwukrotnie, a następnie przeciągnij i upuść player.glb na Pivot.

image1

To powinno utworzyć instancję modelu będącego dzieckiem Pivot. Możesz zmienić jego nazwę na Character.

image2

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.

../../_images/add_capsuleshape3d.webp

Siatka sfery pojawia się pod postacią.

image3

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.

image4

Możesz zmienić widoczność modelu, klikając ikonę oka obok węzłów Character lub Pivot.

image5

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.

image6

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.

image7

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.

image8

Utwórz pięć następujących akcji:

image9

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.

../../_images/left_inputmap.webp

Powiąż również klawisz A z akcją move_left.

image12

Dodajmy teraz obsługę lewego joysticka gamepada. Ponownie kliknij przycisk "+", ale tym razem wybierz Manual Selection -> Joypad Axes.

../../_images/joystick_axis_input.webp

Wybierz ujemną oś X lewego joysticka.

../../_images/left_joystick_select.webp

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.

image15

Ostatnią akcją do skonfigurowania jest akcja skok. Powiąż klawisz spacji i przycisk A gamepada.

image16

Sterowanie dla akcji skoku powinno wyglądać następująco.

image18

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.