Usando GridMaps

Introducción

Gridmaps son una herramienta para crear niveles de juego en 3D, similar a la forma en que TileMap funciona en 2D. Comienzas con una colección predefinida de mallas 3D (una class_MeshLibrary`) que pueden ser colocadas en un gruid, como si estuvieras construyendo un nivel con una cantidad ilimitada de bloques de Lego.

Las colisiones y la navegación también se pueden añadir a las mallas, como se haría con los tiles de un mapa de tiles.

Proyecto ejemplo

Para aprender cómo funcionan los GridMaps, empieza descargando el proyecto de muestra: gridmap_demo.zip.

Descomprime este proyecto y agrégalo al Gestor de Proyectos usando el botón "Importar".

Creando una MeshLibrary

Para empezar, necesitas una MeshLibrary, que es una colección de mallas individuales que pueden ser usadas en el gridmap. Abre la escena "MeshLibrary_Source.tscn" para ver un ejemplo de cómo configurar la biblioteca de mallas.

../../_images/gridmap_meshlibrary1.png

Como pueden ver, esta escena tiene un nodo Spatial como raíz, y un número de hijos del nodo MeshInstance.

Si no necesitas nada de física en tu escena, entonces estás acabado. Sin embargo, en la mayoría de los casos querrás asignar cuerpos de colisión a las mallas.

Colisiones

Puedes asignar manualmente un StaticBody y CollisionShape a cada malla. Alternativamente, puedes usar el menú "Malla" para crear automáticamente el cuerpo de colisión basado en los datos de la malla.

../../_images/gridmap_create_body.png

Tengan en cuenta que un cuerpo de colisión "Convexo" funcionará mejor para las mallas simples. Para formas más complejas, seleccione "Crear cuerpo estático Trimalla". Una vez que cada malla tenga asignado un cuerpo físico y una forma de colisión, su biblioteca de mallas estará lista para ser utilizada.

../../_images/gridmap_mesh_scene.png

Materiales

Sólo se utilizan los materiales del interior de las mallas para generar la biblioteca de mallas. Los materiales establecidos en el nodo serán ignorados.

Exportación de MeshLibrary

Para exportar la biblioteca, haz clic en Escena -> Convertir a.. -> MeshLibrary..., y guárdala como un recurso.

../../_images/gridmap_export.png

Puedes encontrar una MeshLibrary ya exportada en el proyecto llamado "MeshLibrary.tres".

Usando GridMap

Crea una nueva escena y añade un nodo GridMap. Añade la librería de mallas arrastrando el archivo de recursos desde el panel del Sistema de Archivos y soltándolo en la propiedad "Theme" en el Inspector.

../../_images/gridmap_main.png

La propiedad "Celda/Tamaño" debe ser ajustada al tamaño de sus mallas. Puedes dejarla en el valor por defecto para la demostración. Poner la propiedad "Centrar Y" en "Apagado".

Ahora puedes empezar a diseñar el nivel eligiendo un tile de la paleta y colocándolo con un clic izquierdo en la ventana del editor. Para eliminar un tile, mantén pulsado Shift y usa el botón derecho.

Haga clic en el menú "GridMap" para ver las opciones y los atajos. Por ejemplo, presionando S gira una baldosa alrededor del eje y.

../../_images/gridmap_menu.png

Manteniendo pulsado Mayúscula y arrastrando con el botón izquierdo del ratón se dibujará un cuadro de selección. Puede duplicar o borrar el área seleccionada usando las respectivas opciones de menú.

../../_images/gridmap_select.png

En el menú, también puede cambiar el eje sobre el que está dibujando, así como desplazar el plano de dibujo más arriba o más abajo en su eje.

../../_images/gridmap_shift_axis.png

Usando Gridmap en código

Ver GridMap para detalles sobre los métodos del nodo y las variables de miembros.