Criando a cena do jogador

Com as configurações do projeto feitas, podemos começar a trabalhar no personagem controlado pelo jogador.

A primeira cena definirá o objeto Player. Um dos benefícios de criar uma cena Player separada é que podemos testá-la separadamente, mesmo antes de criarmos outras partes do jogo.

Estrutura de nós

To begin, we need to choose a root node for the player object. As a general rule, a scene's root node should reflect the object's desired functionality - what the object is. In the upper-left corner, in the "Scene" tab, click the "Other Node" button and add an Area2D node to the scene.

../../_images/add_node.webp

Quando você adiciona o nó Area2D, o Godot exibirá o seguinte ícone de aviso ao lado dele na árvore de cena:

../../_images/no_shape_warning.webp

Esse aviso nos informa que o nó Area2D requer uma forma para detectar colisões ou sobreposições. Podemos ignorar o aviso temporariamente porque primeiro configuraremos os visuais do jogador (usando um sprite animado). Assim que os visuais estiverem prontos, adicionaremos uma forma de colisão como nó filho. Isso nos permitirá dimensionar e posicionar a forma com precisão com base na aparência do sprite.

Com a Area2D, nós podemos detectar objetos que se sobreponham ou vão de encontro ao jogador. Mude seu nome para Player 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 adicionarmos qualquer criança ao nó Player, queremos ter certeza de que não nos movemos acidentalmente ou redimensioná-los clicando neles. Selecione o nó e clique no ícone à direita da fechadura. Sua ferramenta de dica diz "Agrupa o nó selecionado com seus filhos. Isso faz com que o pai seja selecionado quando qualquer nó filho é clicado em visualização 2D e 3D."

../../_images/lock_children.webp

Save the scene as player.tscn. Click Scene > Save, or press Ctrl + S on Windows/Linux or Cmd + S on macOS.

Nota

Para esse projeto, vamos seguir as convenções de nomeação do 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 (Ctrl + A on Windows/Linux or Cmd + A on macOS) a child node AnimatedSprite2D. The AnimatedSprite2D will handle the appearance and animations for our player. Notice that there is a warning symbol next to the node. An AnimatedSprite2D requires a SpriteFrames resource, which is a list of the animations it can display. Make sure AnimatedSprite2D is selected and then find the Sprite Frames property under the Animation section in the Inspector and click "[empty]" -> "New SpriteFrames":

../../_images/new_spriteframes.webp

Clique em SpriteFrames que você acabou de criar para abrir o painel "SpriteFrames":

../../_images/spriteframes_panel.webp

À esquerda está uma lista de animações. Clique na animação default e renomeie para walk. Em seguida, clique no botão Adicionar Animação para criar uma segunda animação chamada up.

Find the player images in the FileSystem dock - they're in the art folder you unzipped earlier. Drag the two images for each animation, into the Animation Frames side of the panel for the corresponding animation:

  • playerGrey_walk1 e playerGrey_walk2 para a animação walk

  • playerGrey_up1 e playerGrey_up2 para a animação up

../../_images/spriteframes_panel2.webp

As imagens do jogador são um tanto grandes demais para a janela de jogo, então precisamos reduzir sua escala. Clique no nó AnimatedSprite e configure a propriedade Scale (escala) para (0.5, 0.5). Você pode encontrá-la no Inspetor na seção Node2D.

../../_images/player_scale.webp

Finalmente, adicione um CollisionShape2D (forma de colisão 2D) como filho de Player. 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 de tamanho, redimensione a forma para cobrir o sprite:

../../_images/player_coll_shape1.webp

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

../../_images/player_scene_nodes.webp

Depois que isso for feito, o aviso no nó Area2D desaparecerá, pois agora ele possui uma forma atribuída e pode interagir com outros objetos.

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

Na próxima parte, adicionaremos um roteiro ao nó jogador para movê-lo e animá-lo. Depois, configuraremos a detecção de colisão para saber quando o jogador é atingido por alguma coisa.