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.

Configurando a área de jogo

Nesta primeira parte, vamos configurar a área de jogo. Vamos começar importando os assets iniciais e configurando a cena do jogo.

Preparamos um projeto Godot com os modelos 3D e sons que usaremos neste tutorial, vinculados na página de índice. Caso ainda não tenha feito isso, você pode baixar o arquivo aqui: Recursos de Squash the Creeps.

Após baixá-lo, extraia o arquivo .zip em seu computador. Abra o Gerenciador de Projetos do Godot e clique no botão Import.

../../_images/01.import_button.webp

Na janela de importação, informe o caminho completo para o diretório recém-criado 3d_squash_the_creeps_starter/. Você pode clicar no botão Browse à direita para abrir um explorador de arquivos e navegar até o arquivo project.godot contido na pasta.

../../_images/02.browse_to_project_folder.webp

Clique em Import para abrir o projeto no editor.

../../_images/03.import_and_edit.webp

Uma janela informando que o projeto foi gerado por uma versão mais antiga do Godot pode aparecer. Clique em OK para converter o projeto para sua versão atual do Godot.

../../_images/import_project_to_4.x_prompt.webp

Se ele não abrir imediatamente, abra o projeto a partir da sua lista de projetos.

O projeto inicial contém um ícone e duas pastas: art/ e fonts/. Lá, você encontrará os recursos de arte e música que usaremos no jogo.

../../_images/04.start_assets.webp

Existem dois modelos 3D, player.glb e mob.glb, alguns materiais que pertencem a esses modelos e uma faixa de música.

Configurando a área jogável

Vamos criar nossa cena principal com um Node simples como raiz. No painel Scene, clique no botão Add Child Node, representado por um ícone de "+", no canto superior esquerdo e dê um duplo clique em Node. Renomeie o nó para Main. Um método alternativo para renomear o nó é clicar com o botão direito em Node e escolher Rename (ou F2). Como alternativa, para adicionar um nó à cena, você pode pressionar Ctrl + A (Cmd + A no macOS).

../../_images/05.main_node.webp

Salve a cena como main.tscn pressionando Ctrl + S (Cmd + S no macOS).

Começaremos adicionando um chão que impedirá os personagens de cair. Para criar colisores estáticos, como o chão, paredes ou tetos, você pode usar nós StaticBody3D. Eles exigem nós filhos CollisionShape3D para definir a área de colisão. Com o nó Main selecionado, adicione um nó StaticBody3D e, em seguida, um CollisionShape3D. Renomeie o StaticBody3D para Ground.

../../_images/adding_static_body3D.webp

A tua árvore de cena deve parecer assim

../../_images/06.staticbody_node.webp

Um sinal de aviso ao lado do CollisionShape3D aparece porque não definiu sua forma. Se você clicar no ícone, um popup aparece para lhe dar mais informações.

../../_images/07.collision_shape_warning.webp

Para criar uma forma, selecione o nó CollisionShape3D , vá para o Inspector e clique no campo <empty> ao lado da propriedade Shape. Crie um novo BoxShape3D.

../../_images/08.create_box_shape3D.webp

A forma de caixa é perfeita para terrenos planos e paredes. Sua espessura o torna confiável para bloquear até mesmo objetos em movimento rápido.

A estrutura de arame (wireframe) de uma caixa aparece na viewport com três pontos laranjas. Você pode clicar e arrastar esses pontos para editar as extensões da forma de maneira interativa. Também podemos definir o tamanho com precisão no inspetor. Clique no BoxShape3D para expandir o recurso. Defina o seu Size como 60 no eixo X, 2 no eixo Y e 60 no eixo Z.

../../_images/09.box_size.webp

As formas de colisão são invisíveis. Precisamos adicionar um chão visual que as acompanhe. Selecione o nó Ground e adicione um MeshInstance3D como seu filho.

../../_images/10.mesh_instance3d.webp

No Inspector, clique no campo ao lado de Mesh e crie um recurso BoxMesh para criar um cubo visível.

../../_images/11.box_mesh.webp

Mais uma vez, o tamanho padrão é muito pequeno. Clique no ícone de caixa para expandir o recurso e defina seu Size (tamanho) como 60, 2 e 60.

../../_images/12.cube_resized.webp

You should see a wide gray slab that covers the grid, as well as blue and red axes in the viewport.

Vamos mover o chão para baixo para podermos visualizar a grade do piso. Para isso, pode-se usar o recurso de ajuste à grade. O ajuste à grade pode ser ativado de duas maneiras no editor 3D. A primeira é pressionando o botão Use Snap (ou a tecla Y). A segunda é selecionando um nó, arrastando uma alça do manipulador e então mantendo pressionada a tecla Ctrl (Cmd no macOS) enquanto continua arrastando o nó selecionado.

../../_images/use_snap.webp

Comece ativando o alinhamento à grade com o método de sua preferência. Em seguida, mova o nó Ground usando o eixo Y (a seta verde no gizmo).

../../_images/move_gizmo_y_axis.webp

Nota

Se você não conseguir ver o manipulador de objetos 3D como na imagem acima, certifique-se de que o Transform Mode esteja ativo na barra de ferramentas acima da visualização.

../../_images/14.select_mode_icon.webp

Mova o chão 1 metro para baixo para que a grade do editor fique visível. Um rótulo no canto inferior esquerdo da viewport indica o quanto você está deslocando o nó.

../../_images/15.translation_amount.png

Nota

Mover o nó Ground para baixo move ambos os filhos junto com ele. Certifique-se de mover o nó Ground, não o MeshInstance3D nem o CollisionShape3D.

Ultimately, Ground's Y position should be -1.

../../_images/ground_down1meter.webp

Let's add a directional light so our scene isn't all gray. Select the Main node and add a child node DirectionalLight3D.

../../_images/create_directional_light3d.webp

Precisamos mover e rotacionar o nó DirectionalLight3D. Mova-o para cima clicando e arrastando a seta verde do manipulador e clique e arraste o arco vermelho para rotacioná-lo em torno do eixo X, até que o chão esteja iluminado.

No Inspector, ative Shadow marcando a caixa de seleção.

../../_images/16.turn_on_shadows.webp

Neste ponto, seu projeto deve se parecer com isso.

../../_images/17.project_with_light.webp

Esse é o nosso ponto de partida. Na próxima parte, trabalharemos a cena do jogador e o movimento da base.