Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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 começar, precisamos escolher um nó raiz para o objeto do jogador. Como regra geral, o nó raiz de uma cena deve refletir a funcionalidade desejada do objeto — o que o objeto é. No canto superior esquerdo, na aba "Cena", clique no botão "Outro Nó" e adicione um nó Area2D à cena.
Nota
A Godot também fornece o nó CharacterBody2D projetado especificamente para personagens 2D, que inclui suporte integrado para alguns dos processos explicados neste tutorial. Em muitos projetos reais, o CharacterBody2D seria uma escolha melhor para jogadores e inimigos. No entanto, este tutorial se concentra em conceitos básicos que se aplicam a uma gama mais ampla de nós e casos de uso.
Quando você adiciona o nó Area2D, o Godot exibirá o seguinte ícone de aviso ao lado dele na árvore de cena:
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."
Salve a cena como jogador.tscn. 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) utilizam PascalCase, variáveis e funções utilizam snake_case e constantes utilizam letras maiúsculas (veja Guia de Estilo GDScript).
C#: Classes, variáveis exportadas e métodos usam PascalCase; campos privados usam _camelCase; variáveis locais e parâmetros usam camelCase (consulte Guia de Estilo C#). Tome cuidado para digitar os nomes dos métodos exatamente ao conectar sinais.
Animação por Sprites
Clique no nó Player e adicione (Ctrl + A no Windows/Linux ou Cmd + A no macOS) um nó filho AnimatedSprite2D. O AnimatedSprite2D será responsável pela aparência e pelas animações do nosso jogador. Observe que há um símbolo de aviso ao lado do nó. Um AnimatedSprite2D requer um recurso SpriteFrames, que é uma lista das animações que ele pode exibir. Certifique-se de que AnimatedSprite2D esteja selecionado e então encontre a propriedade Sprite Frames na seção Animation do Inspetor e clique em "[empty]" -> "New SpriteFrames":
Clique em SpriteFrames que você acabou de criar para abrir o painel "SpriteFrames":
À 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.
Encontre as imagens do jogador na aba FileSystem — elas estão na pasta art que você descompactou anteriormente. Arraste as duas imagens de cada animação para o lado de Animation Frames do painel para a animação correspondente:
playerGrey_walk1eplayerGrey_walk2para a animaçãowalkplayerGrey_up1eplayerGrey_up2para a animaçãoup
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:
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.