Creating the player scene

With the project settings in place, we can start working on the player-controlled character.

Pierwszą sceną, którą stworzymy, będzie Player. Jedną z zalet stworzenia oddzielnej sceny Player jest to, że możemy ją przetestować oddzielnie, nawet zanim utworzymy inne części gry.

Struktura węzłów

Na początek musimy wybrać węzeł główny obiektu gracza. Zazwyczaj węzeł główny sceny powinien odzwierciedlać pożądaną funkcjonalność obiektu - to, czym obiekt jest. Kliknij przycisk "Inny węzeł" i dodaj węzeł Area2D na scenę.

../../_images/add_node.png

Godot wyświetli ikonę ostrzeżenia obok dodanego w drzewie sceny węzła. Zignorujmy to na tę chwilę. Zajmiemy się tym później.

Za pomocą Area2D możemy wykrywać obiekty, które zachodzą na siebie lub wpływają na gracza. Zmieńmy jego nazwę na Player klikając dwukrotnie na nazwę węzła. Jest to główny węzeł sceny i możemy dodać do niego dodatkowe węzły, aby zwiększyć jego funkcjonalność.

Przed dodaniem dzieci do węzła Player chcemy się upewnić, że nie przesunęliśmy ich przypadkowo lub nie zmieniliśmy ich wielkości klikając na nie. Zaznacz węzeł i kliknij ikonę po prawej stronie kłódki; jego podpowiedź brzmi "Upewnij się, że dzieci nie są wybieralne."

../../_images/lock_children.png

Zapisz scenę. Kliknij Scena -> Zapisz lub naciśnij Ctrl+S w Windowsie/Linuksie lub Command+S na systemie Mac.

Informacja

Dla tego projektu, będziemy korzystać z konwencji nazewnictwa typowych dla Godota.

  • GDScript: W klasach (węzłach) używać będziemy PascalCase, w zmiennych i funkcjach snake_case, a w stałych ALL_CAPS. Wszystkie nazwy zapisywane będą bez znaków diakrytycznych (Więcej o GDScript style guide).

  • C#: Classes, export variables and methods use PascalCase, private fields use _camelCase, local variables and parameters use camelCase (See Styl pisania kodu w C#). Be careful to type the method names precisely when connecting signals.

Animacja węzła Sprite

Click on the Player node and add an AnimatedSprite node as a child. The AnimatedSprite will handle the appearance and animations for our player. Notice that there is a warning symbol next to the node. An AnimatedSprite requires a SpriteFrames resource, which is a list of the animations it can display. To create one, find the Frames property in the Inspector and click "[empty]" -> "New SpriteFrames". Click again to open the "SpriteFrames" panel:

../../_images/spriteframes_panel.png

Po lewej stronie znajduje się lista animacji. Kliknij "default" i zmień jego nazwę na "walk". Następnie kliknij przycisk "Nowa animacja", aby utworzyć drugą animację o nazwie "up". Znajdź grafiki gracza w panelu systemu plików - znajdują się one w folderze art, który wypakowaliśmy. Przeciągnij dwie grafiki dla każdej animacji o nazwach playerGrey_up[1/2] i playerGrey_walk[1/2] do części panelu podpisanej jako "Klatki animacji":

../../_images/spriteframes_panel2.png

The player images are a bit too large for the game window, so we need to scale them down. Click on the AnimatedSprite node and set the Scale property to (0.5, 0.5). You can find it in the Inspector under the Node2D heading.

../../_images/player_scale.png

Finally, add a CollisionShape2D as a child of Player. This will determine the player's "hitbox", or the bounds of its collision area. For this character, a CapsuleShape2D node gives the best fit, so next to "Shape" in the Inspector, click "[empty]"" -> "New CapsuleShape2D". Using the two size handles, resize the shape to cover the sprite:

../../_images/player_coll_shape1.png

Po zakończeniu, scena Player powinna wyglądać w ten sposób:

../../_images/player_scene_nodes.png

Pamiętaj o ponownym zapisaniu sceny po tych zmianach.

In the next part, we'll add a script to the player node to move and animate it. Then, we'll set up collision detection to know when the player got hit by something.