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¶
Para iniciarmos, precisamos escolher o nó raiz para o objeto jogador. Como regra geral, o nó raiz da cena deve refletir a funcionalidade desejado do objeto: o que o objeto é. Clique no botão "Outros Nós" e adicione um nó Area2D à cena.
Godot vai mostrar um ícone de aviso próximo do nó na árvore de cenas. Você pode ignorá-lo por enquanto; vamos falar disso mais tarde.
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 filhos ao nó Player
, queremos ter certeza de que não os moveremos ou redimensionaremos acidentalmente clicando neles. Selecione o nó e clique no ícone à direita do cadeado; sua dica de ferramenta diz "Garante que os filhos do objeto não sejam selecionáveis".
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 do Godot.
GDScript: Classes (nós) usam o estilo
PascalCase
(IniciaisMaiúsculas), variáveis e funções usamsnake_case
(minúsculas_separadas_por_sublinha) e constantes usamALL_CAPS
(TODAS_MAIÚSCULAS) (Veja mais em Guia de Estilo GDScript).C#: Classes, variáveis de exportação e métodos usam PascalCase, campos privados usam _camelCase, variáveis locais e parâmetros usam camelCase (Veja :ref: doc_c_sharp_styleguide). Tenha o cuidado de digitar os nomes dos métodos com precisão ao conectar os sinais.
Animação por Sprites¶
Clique no nó Player
e adicione um nó AnimatedSprite (sprite animado) como filho. O AnimatedSprite
irá lidar com a aparência e as animações do nosso jogador. Note que existe um símbolo de alerta ao lado do nó. Um AnimatedSprite
exige um recurso do tipo SpriteFrames (quadros de sprite), que é uma lista das animações que ele pode mostrar. Para criar um, encontre a propriedade Frames
no Inspetor e clique em "[vazio]" -> "Novo SpriteFrames". Clique novamente para abrir o painel de "SpriteFrames":
À esquerda está uma lista de animações. Clique em "default" e a renomeie para "walk". Então, clique no botão "Nova Animação" para criar uma segunda animação chamada "up". Encontre as imagens do jogador na aba "Arquivos" - elas 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 da região "Frames da Animação" do painel para a animação correspondente:
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
.
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:
Quando tiver finalizado, sua cena Player
deveria se parecer assim:
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.