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...
Cena do Jogador e ações de entrada
Nas próximas duas lições, projetaremos a cena do jogador, registraremos ações de entrada personalizadas e codificaremos o movimento do jogador. Ao final, você terá um personagem jogável que se move em oito direções.
Crie uma nova cena acessando o menu Scene no canto superior esquerdo e clicando em New Scene.
Clique no botão Outro Nó e selecione o tipo de nó CharacterBody3D para criar um CharacterBody3D como nó raiz.
Renomeie o CharacterBody3D para Player. Corpos de personagens (Character bodies) são complementares aos corpos de área e rígidos usados no tutorial do jogo 2D. Assim como os corpos rígidos, eles podem se mover e colidir com o ambiente, mas, em vez de serem controlados pelo motor de física, você dita o movimento deles. Você verá como usamos os recursos exclusivos do nó quando codificarmos as mecânicas de pulo e esmagamento.
Ver também
Para aprender mais sobre os diferentes tipos de nodos físicos, veja Introdução à física.
Por enquanto, vamos criar um rig básico para o modelo 3D do nosso personagem. Isso nos permitirá girar o modelo posteriormente via código enquanto ele reproduz uma animação.
Adicione um nó Node3D como filho do nó Jogador. Selecione o nó Jogador na árvore de Cenas e clique no botão "+" para adicionar um nó filho. Renomeie o nó para Pivô.
Em seguida, na aba FileSystem, expanda a pasta art/ com um duplo clique e arraste e solte player.glb sobre o Pivot.
Isso deve instanciar o modelo como um filho de Pivot. Você pode renomeá-lo para Character.
Nota
Os arquivos .glb contêm dados de cenas 3D baseados na especificação aberta glTF 2.0. Eles são uma alternativa moderna e poderosa a formatos proprietários como FBX, que o Godot também suporta. Para produzir esses arquivos, projetamos o modelo no Blender 3D e o exportamos para glTF.
Assim como com todos os tipos de nós de física, precisamos de uma forma de colisão para o nosso personagem colidir com o ambiente. Selecione o nó Player novamente e adicione um nó filho CollisionShape3D. No Inspector, na propriedade Shape, adicione um novo SphereShape3D.
O wireframe da esfera aparece abaixo do personagem.
Essa será a forma que o mecanismo de física utilizará para colisões com o ambiente, então queremos que ela se ajuste melhor ao modelo 3D. Aumente-a um pouco arrastando o ponto laranja na viewport. Minha esfera possui um raio de aproximadamente 0.8 metros.
Em seguida, mova a forma de colisão para cima para que sua base fique aproximadamente alinhada com o plano da grade.
Para facilitar a movimentação da forma, você pode alternar a visibilidade do modelo clicando no ícone de olho ao lado dos nós Character ou Pivot.
Salve a cena como Jogador.tscn.
Com os nós prontos, podemos quase começar a codificar. Mas primeiro, precisamos definir algumas ações de entrada.
Criando ações de entrada
Para mover o personagem, vamos escutar a entrada do jogador, como pressionar as teclas de seta. Em Godot, embora possamos escrever todas as combinações de teclas em código, há um sistema poderoso que permite atribuir um rótulo a um conjunto de teclas e botões. Isso simplifica nossos scripts e os torna mais legíveis.
Esse sistema é o Input Map (Mapa de Entrada). Para acessar o seu editor, vá ao menu Project e selecione Project Settings....
No topo, existem várias abas. Clique em Input Map. Essa janela permite adicionar novas ações no topo; elas são os seus rótulos. Na parte inferior, você pode vincular teclas a essas ações.
Os projetos do Godot vêm com algumas ações predefinidas projetadas para o design de interface do usuário (veja a captura de tela acima). Elas se tornarão visíveis se você ativar a opção Show Built-in Actions. Poderíamos usá-las aqui, mas, em vez disso, vamos definir as nossas próprias para suportar gamepads. Deixe Show Built-in Actions desativado.
Vamos nomear nossas ações move_left, move_right, move_forward, move_back e jump.
Para adicionar uma ação, digite o nome dela na barra no topo e pressione Enter ou clique no botão Add (Adicionar).
Crie as cinco ações a seguir:
Para vincular uma tecla ou botão a uma ação, clique no botão "+" à sua direita. Faça isso para move_left. Pressione a tecla de seta para a esquerda e clique em OK.
Atribua também a tecla A, para a ação move_left.
Vamos agora adicionar suporte para o analógico esquerdo de um gamepad. Clique no botão "+" novamente, mas desta vez, selecione você mesmo a entrada dentro da árvore de entradas. Selecione o eixo X negativo do analógico esquerdo sob Joypad Axes.
Deixe os outros valores como padrão e pressione OK.
Nota
Se você quiser que os joysticks tenham diferentes ações de entrada, você deve usar a opção Dispositivos em Opções Adicionais. O dispositivo 0 corresponde ao primeiro gamepad plugado, o dispositivo 1 corresponde ao segundo gamepad plugado, e assim por diante.
Faça o mesmo para as outras ações de entrada. Por exemplo, associe a seta para a direita, a tecla D e o eixo positivo do analógico esquerdo à ação move_right. Após associar todas as teclas, sua interface deverá se parecer com isto.
A última ação a ser configurada é a ação jump. Vincule a tecla Espaço e o botão A do gamepad localizado sob Joypad Buttons.
Sua ação de entrada de salto deve se parecer com isso.
Essas são todas as ações que precisamos para este jogo. Você pode usar este menu para rotular quaisquer grupos de teclas e botões em seus projetos.
Na próxima parte, nós iremos programar e testar o movimento do jogador.