Creating the player scene

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

A primeira cena que faremos define o objeto "Jogador". Um dos benefícios de criarmos uma cena separada para o Jogador é que podemos testá-la separadamente, mesmo antes de criarmos outras partes do jogo.

Estrutura de nós

Para iniciarmos, precisamos escolher o nó raiz para o objeto jogador. Como regra geral, o nó raiz da cena deve refletir à funcionalidade desejado do objeto - o que o objeto é. Clique no botão "Outros Nós" e adicione o nó Area2D à cena.

../../_images/add_node.png

Godot vai mostrar um ícone de aviso próximo do nó na árvore de cenas. Você pode ignorar isso por enquanto. Nós vamos falar disso mais tarde.

Com Area2D, nós podemos detectar objetos que se sobreponham ou vão de encontro ao jogador. Mude seu nome para Jogador com um clique duplo no nome do nó. Já que nós configuramos o nó raiz, nós agora podemos inserir nós adicionais para adicionar mais funcionalidades.

Antes de adicionar filhos ao nó Jogador, queremos ter certeza que não os moveremos nem os redimensionaremos acidentalmente ao clicar neles. Selecione o nó e clique no ícone à direita do cadeado; seu texto de dica diz "Garante que os filhos do objeto não sejam selecionáveis."

../../_images/lock_children.png

Salve a cena. Clique em Cena -> Salvar ou pressione Ctrl + S no Windows/Linux ou Cmd + S no macOS.

Nota

Para esse projeto, vamos seguir as convenções de nomeação Godot.

  • GDScript: Classes (nós) usam o estilo PascalCase (IniciaisMaiúsculas), variáveis e funções usam snake_case (minúsculas_separadas_por_sublinha), e constantes usam ALL_CAPS (TODAS_MAIÚSCULAS) (Veja mais em Guia de Estilo GDScript).

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

Animação por Sprites

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

À esquerda está uma lista de animações. Clique em "default" e a renomeie para "caminhar". Então, clique no botão "Nova Animação" para criar uma segunda animação chamada "cima". Encontre as imagens do jogador na aba "Sistema de Arquivos" - eles estão na pasta art que você descompactou mais cedo. Arraste as duas imagens de cada animação, chamadas playerGrey_up[1/2] e playerGrey_walk[1/2] para dentro do "Animation Frames" ao lado do painel correspondende de cada animação:

../../_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

Finalmente, adicione um CollisionShape2D (forma de colisão 2D) como filho de Jogador. Isso determina a "hitbox" (caixa de acerto) do jogador, ou seja, os limites da sua área de colisão. Para este personagem, um nó CapsuleShape2D (forma cápsula 2D) é o que melhor se encaixa. Então, ao lado de "Shape" (forma) no Inspetor, clique em "[vazio]"" -> "Novo CapsuleShape2D". Utilizando os dois manipuladores, redimensione a forma para cobrir o sprite:

../../_images/player_coll_shape1.png

Quando tiver finalizado, sua cena Jogador deveria se parecer assim:

../../_images/player_scene_nodes.png

Certifique-se de salvar a cena novamente após as alterações.

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.