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...
Usando GridMaps
Introdução
Os Gridmaps são uma ferramenta para criar níveis de jogos 3D, de forma semelhante a como o TileMap funciona em 2D. Você começa com uma coleção predefinida de malhas 3D (uma MeshLibrary) que podem ser colocadas em uma grade, como se estivesse construindo um nível com uma quantidade ilimitada de blocos de Lego.
Colisões e navegação também podem ser adicionadas às malhas, exatamente como você faria com os tiles de um tilemap.
Exemplo de projeto
Para aprender como os GridMaps funcionam, comece baixando o projeto de exemplo: gridmap_starter.zip.
Descompacte este projeto e adicione-o ao Gerenciador de Projetos usando o botão "Import". Você pode receber uma janela pop-up informando que ele precisa ser convertido para uma versão mais recente do Godot; clique em Convert project.godot.
Criando uma MeshLibrary
Para começar, você precisa de uma MeshLibrary, que é uma coleção de malhas individuais que podem ser usadas no gridmap. Abra a cena "mesh_library_source.tscn" para ver um exemplo de como configurar a biblioteca de malhas.
Como você pode ver, esta cena tem um nó Node3D como sua raiz e uma série de nós filhos MeshInstance3D.
Se você não precisa de física na sua cena, então terminou. No entanto, na maioria dos casos, você vai querer atribuir corpos de colisão (collision bodies) às malhas.
Colisões
Você pode atribuir manualmente um StaticBody3D e um CollisionShape3D a cada malha. Alternativamente, você pode usar o menu "Mesh" para criar automaticamente o corpo de colisão com base nos dados da malha.
Note que um corpo de colisão "Convex" funcionará melhor para malhas simples. Para formas mais complexas, selecione "Create Trimesh Static Body". Assim que cada malha tiver um corpo físico e uma forma de colisão atribuídos, sua biblioteca de malhas estará pronta para ser usada.
Materiais
Somente materiais no interior das malhas serão usados quando gerado a biblioteca de malhas. Materiais definidos no Nó serão ignorados.
Lightmaps (Mapas de luz)
É possível gerar lightmaps (bake) em um GridMap. Os dados de UV2 do lightmap serão reutilizados das malhas se já estiverem presentes. Se os dados de UV2 não estiverem presentes, eles serão gerados automaticamente na criação com um tamanho de texel de lightmap de 0.1 unidades. Para gerar dados de UV2 com um tamanho de texel de lightmap diferente, você pode definir o modo de iluminação global na aba Import para Static Lightmaps e especificar o tamanho do texel lá. Esta opção deve ser alterada antes de a cena ser convertida em uma MeshLibrary, pois alterá-la mais tarde não afetará os dados existentes da MeshLibrary.
Exceto por essa peculiaridade, o processo de geração de lightmap é o mesmo de qualquer outra cena 3D. Veja Usando a iluminação global Lightmap para mais informações sobre geração de lightmaps.
Formato MeshLibrary
Para resumir as restrições específicas do formato MeshLibrary, uma cena da MeshLibrary possui um Node3D como nó raiz e vários nós filhos que se tornarão itens da MeshLibrary. Cada filho do nó raiz deve:
Ser uma MeshInstance3D, que se tornará o item da MeshLibrary. Apenas esta malha visual será exportada.
Possuir um material no slot de material da própria malha (mesh), não nos slots de material da MeshInstance3D.
Possuir até um nó filho StaticBody3D, para colisão. O StaticBody3D deve ter um ou mais nós filhos CollisionShape3D.
Possuir até um nó filho NavigationRegion3D, para navegação. A NavigationRegion3D pode ter um ou mais nós filhos MeshInstance3D adicionais, que podem ser gerados (baked) para navegação, mas não serão exportados como uma malha visual.
Apenas este formato específico é reconhecido. Outros tipos de nós colocados como filhos não serão reconhecidos nem exportados. O GridMap não é um sistema de uso geral para colocar nós em uma grade, mas sim um sistema específico e otimizado, projetado para colocar malhas (meshes) com colisões e navegação.
Exportando a MeshLibrary
Para exportar a biblioteca, clique em Scene > Export As... > MeshLibrary... e salve-a como um recurso.
Você pode encontrar uma MeshLibrary já exportada no projeto com o nome MeshLibrary.tres.
Usando GridMap
Crie uma nova cena e adicione um nó GridMap. Adicione a biblioteca de malhas arrastando o arquivo de recurso do painel FileSystem e soltando-o na propriedade Mesh Library do Inspetor.
Propriedades do Inspetor
A configuração Physics Material permite que você sobreponha o material físico para cada malha na NavigationMesh.
Em Cells, a propriedade Size deve ser definida com o tamanho das suas malhas. Você pode deixá-la no valor padrão para a demonstração. Desmarque a propriedade Center Y.
As opções de Collision permitem definir a camada de colisão (collision layer), a máscara de colisão (collision mask) e a prioridade para todo o gridmap. Para mais informações sobre como elas funcionam, veja a seção Física.
Em Navigation está a opção "Bake Navigation". Se ativada, ela cria uma região de navegação para cada célula que usa um item da biblioteca de malhas com uma malha de navegação (navigation mesh).
Se você clicar na própria MeshLibrary no inspetor, poderá ajustar as configurações de malhas individuais, como sua malha de navegação, camadas de navegação ou se a malha projeta sombras.
Painel GridMap
Na parte inferior do editor está o painel do GridMap, que deve ter se aberto automaticamente quando você adicionou o nó GridMap.
Da esquerda para a direita na barra de ferramentas:
Transform: Adiciona um gizmo à cena que permite alterar a posição e a rotação relativas do gridmap na cena.
Selection: Enquanto estiver ativa, você pode selecionar uma área na viewport, clicando e arrastando para selecionar mais de um espaço na grade.
Erase: Enquanto estiver ativa, clique na viewport para apagar as malhas.
Paint: Enquanto estiver ativa, clique na viewport para adicionar à cena qualquer malha que esteja selecionada atualmente no painel do GridMap.
Pick: Enquanto estiver ativa, clicar em uma malha do gridmap na viewport fará com que ela seja selecionada no painel do GridMap.
Fill: Preenche a área que foi selecionada na viewport com a malha que estiver selecionada no painel inferior do GridMap.
Move: Move qualquer malha ou conjunto de malhas atualmente selecionado na viewport.
Duplicate: Cria uma cópia da malha ou das malhas que estiverem selecionadas no GridMap.
Delete: Semelhante a apagar, mas para toda a área selecionada.
Cursor Rotate X: Enquanto a ferramenta de pintura estiver selecionada, isso girará a malha que será pintada no eixo X. Isso também girará as áreas selecionadas se elas estiverem sendo movidas.
Cursor Rotate Y: Enquanto a ferramenta de pintura estiver selecionada, isso girará a malha que será pintada no eixo Y. Isso também girará as áreas selecionadas se elas estiverem sendo movidas.
Cursor Rotate Z: Enquanto a ferramenta de pintura estiver selecionada, isso girará a malha que será pintada no eixo Z. Isso também girará as áreas selecionadas se elas estiverem sendo movidas.
Change Grid Floor (Alterar Andar da Grade): Ajusta em qual andar se está trabalhando atualmente. Pode ser alterado com as setas, digitando um valor no campo ou Ctrl + Roda do mouse.
Filter Meshes: Usado para buscar por uma malha específica no painel inferior.
Zoom: Controla o nível de zoom nas malhas no painel inferior.
Layout toggles: Esses dois botões alternam entre diferentes layouts para as malhas no painel inferior.
Tools dropdown: Este botão abre um menu suspenso com mais algumas opções.
Clicar em Settings nesse menu suspenso abre uma janela que permite alterar a Pick Distance, que é a distância máxima na qual os tiles podem ser colocados em um GridMap, em relação à posição da câmera (em metros).
Usando o GridMap no código
Veja GridMap para detalhes sobre os métodos do nó e variáveis de membro.