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...
GridMap
Hereda: Node3D < Node < Object
Nodo para mapas en 3D basados en tiles.
Descripción
GridMap te permite colocar mallas en una cuadrícula de forma interactiva. Funciona tanto desde el editor como desde los scripts, que pueden ayudarte a crear editores de nivel de juego.
GridMaps utiliza una MeshLibrary que contiene una lista de tiles. Cada tile es una malla con materiales, además de formas de colisión y navegación opcionales.
Un GridMap contiene una colección de celdas. Cada celda de la cuadrícula se refiere a un tile de la MeshLibrary. Todas las celdas en el mapa tienen las mismas dimensiones.
Internamente, un GridMap se divide en una colección dispersa de octantes para una representación eficiente y un procesamiento físico. Cada octante tiene las mismas dimensiones y puede contener varias celdas.
Nota: GridMap no extiende VisualInstance3D y, por lo tanto, no se puede ocultar ni enmascarar por selección basada en VisualInstance3D.layers. Si haces que una luz no afecte la primera capa, todo el GridMap no será iluminado por la luz en cuestión.
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Métodos
Señales
cell_size_changed(cell_size: Vector3) 🔗
Emitida cuando cell_size cambia.
changed() 🔗
Emitida cuando la MeshLibrary de este GridMap cambia.
Enumeraciones
enum DebugVisibilityMode: 🔗
DebugVisibilityMode DEBUG_VISIBILITY_MODE_DEFAULT = 0
Hide the collisions debug shapes in the editor, and use the debug settings to determine their visibility in game (i.e. SceneTree.debug_collisions_hint or SceneTree.debug_navigation_hint).
DebugVisibilityMode DEBUG_VISIBILITY_MODE_FORCE_SHOW = 1
Always show the collisions debug shapes.
DebugVisibilityMode DEBUG_VISIBILITY_MODE_FORCE_HIDE = 2
Always hide the collisions debug shapes.
Constantes
INVALID_CELL_ITEM = -1 🔗
Elemento celular inválido que puede ser usado en set_cell_item() para borrar células (o representar una célula vacía en get_cell_item()).
Descripciones de Propiedades
Si es true, este GridMap crea una región de navegación para cada celda que utiliza un elemento mesh_library con una malla de navegación. La región de navegación creada utilizará la máscara de bits de las capas de navegación asignada al elemento de MeshLibrary.
Si es true, los elementos de la cuadrícula se centran en el eje X.
Si es true, los elementos de la cuadrícula se centran en el eje Y.
Si es true, los elementos de la cuadrícula se centran en el eje Z.
El tamaño de cada octante medido en número de celdas. Esto se aplica a los tres ejes.
La escala de los elementos de celda.
Esto no afecta al tamaño de las celdas de la cuadrícula en sí, sólo a los ítems en ellas. Esto puede ser usado para hacer que los elementos de la celda se superpongan a sus vecinos.
Vector3 cell_size = Vector3(2, 2, 2) 🔗
Las dimensiones de las celdas de rejilla.
Esto no afecta al tamaño de las mallas. Véase cell_scale.
Las capas físicas en las que se encuentra este GridMap.
Los GridMaps actúan como cuerpos estáticos, lo que significa que no son afectados por la gravedad u otras fuerzas. Solo afectan a otros cuerpos físicos que colisionan con ellos.
Las capas físicas en las que este GridMap detecta colisiones. Véase Capas y máscaras de colisión en la documentación para más información.
float collision_priority = 1.0 🔗
La prioridad usada para resolver colisiones cuando ocurre penetración. Cuanto mayor sea la prioridad, menor será la penetración en el objeto. Esto puede usarse, por ejemplo, para evitar que el jugador atraviese los límites de un nivel.
DebugVisibilityMode collision_visibility_mode = 0 🔗
void set_collision_visibility_mode(value: DebugVisibilityMode)
DebugVisibilityMode get_collision_visibility_mode()
Show or hide the GridMap's collision shapes. If set to DEBUG_VISIBILITY_MODE_DEFAULT, this depends on the show collision debug settings.
MeshLibrary mesh_library 🔗
void set_mesh_library(value: MeshLibrary)
MeshLibrary get_mesh_library()
La MeshLibrary asignada.
PhysicsMaterial physics_material 🔗
void set_physics_material(value: PhysicsMaterial)
PhysicsMaterial get_physics_material()
Sobrescribe las propiedades físicas predeterminadas de fricción y rebote para todo el GridMap.
Descripciones de Métodos
void clear() 🔗
Despeja todas las celdas.
void clear_baked_meshes() 🔗
Borra todas las mallas procesadas. Véase make_baked_meshes().
RID get_bake_mesh_instance(idx: int) 🔗
Devuelve el RID de una malla horneada con el idx dado.
Devuelve un array de ArrayMeshes y referencias de Transform3D de todas las mallas horneadas que existen dentro del GridMap actual. Los índices pares contienen ArrayMeshes, mientras que los índices impares contienen Transform3Ds que son siempre iguales a Transform3D.IDENTITY.
Este método se basa en la salida de make_baked_meshes(), que se llamará con gen_lightmap_uv establecido a true y lightmap_uv_texel_size establecido a 0.1 si aún no se ha llamado.
Basis get_basis_with_orthogonal_index(index: int) const 🔗
Devuelve una de las 24 rotaciones posibles que se encuentran a lo largo de los vectores (x,y,z) con cada componente siendo -1, 0 o 1. Para más detalles, consulta el código fuente de Godot.
int get_cell_item(position: Vector3i) const 🔗
El índice de elementos MeshLibrary situado en las coordenadas de la cuadrícula dada. Si la celda está vacía, se devolverá INVALID_CELL_ITEM.
Basis get_cell_item_basis(position: Vector3i) const 🔗
Devuelve la base que da a la celda especificada su orientación.
int get_cell_item_orientation(position: Vector3i) const 🔗
La orientación de la celda en las coordenadas de la cuadrícula dada. -1 se devuelve si la celda está vacía.
bool get_collision_layer_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_layer está habilitada o no, dado un layer_number entre 1 y 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_mask está habilitada o no, dado un layer_number entre 1 y 32.
Devuelve un array de referencias de Transform3D y Mesh correspondientes a las celdas no vacías de la cuadrícula. Las transformaciones se especifican en el espacio local. Los índices pares contienen Transform3Ds, mientras que los índices impares contienen Meshes relacionados con el Transform3D del índice que lo precede.
Devuelve el RID del mapa de navegación que este nodo GridMap utiliza para sus mallas de navegación horneadas por celda.
Esta función siempre devuelve el mapa establecido en el nodo GridMap y no el mapa en el NavigationServer. Si el mapa se cambia directamente con la API de NavigationServer, el nodo GridMap no será consciente del cambio de mapa.
Vector3i get_octant_coords_from_cell_coords(cell_coords: Vector3i) const 🔗
Devuelve las coordenadas del octante Vector3i del octante al que pertenece la celda en cell_coords.
Array[Vector3i] get_octants_in_bounds(bounds: AABB) const 🔗
Returns an array of Vector3i octant coordinates that are inside the given bounds, including octants that have no cells in use.
int get_orthogonal_index_from_basis(basis: Basis) const 🔗
Esta función considera una discretización de las rotaciones en 24 puntos en la esfera unitaria, situados a lo largo de los vectores (x,y,z), siendo cada componente -1, 0 o 1, y devuelve el índice (en el rango de 0 a 23) del punto que mejor representa la orientación del objeto. Para más detalles, consulta el código fuente de Godot.
Array[Vector3i] get_used_cells() const 🔗
Devuelve un array de Vector3 con las coordenadas de la celda no vacía en el mapa de la cuadrícula.
Array[Vector3i] get_used_cells_by_item(item: int) const 🔗
Devuelve un array de todas las celdas con el índice del ítem dado en item.
Array[Vector3i] get_used_cells_in_octant(octant_coords: Vector3i) const 🔗
Returns an array of Vector3is with the cell coordinates of non-empty cells inside the octant at octant_coords.
Array[Vector3i] get_used_cells_in_octant_by_item(octant_coords: Vector3i, item: int) const 🔗
Returns an array of Vector3is with the cell coordinates of cells inside the octant at octant_coords that use the specified cell item.
Array[Vector3i] get_used_octants() const 🔗
Returns an array of Vector3is with the octant coordinates of the non-empty octants in the grid map.
Array[Vector3i] get_used_octants_by_item(item: int) const 🔗
Returns an array of Vector3is with the octant coordinates of the octants that use the specified item in the grid map.
Array[Vector3i] get_used_octants_in_bounds(bounds: AABB) const 🔗
Returns an array of Vector3is with the octant coordinates of non-empty octants that are inside the local bounds.
Vector3i local_to_map(local_position: Vector3) const 🔗
Devuelve las coordenadas del mapa de la celda que contiene la local_position dada. Si local_position está en coordenadas globales, considera usar Node3D.to_local() antes de pasarla a este método. Véase también map_to_local().
void make_baked_meshes(gen_lightmap_uv: bool = false, lightmap_uv_texel_size: float = 0.1) 🔗
Genera una malla procesada que representa todas las mallas en la MeshLibrary asignada para su uso con LightmapGI. Si gen_lightmap_uv es true, se generarán datos UV2 para cada malla utilizada actualmente en GridMap. De lo contrario, solo las mallas que ya tengan datos UV2 presentes podrán usar lightmaps procesados. Al generar UV2, lightmap_uv_texel_size controla la densidad de texeles para los lightmaps, con valores más bajos que dan como resultado lightmaps más detallados. lightmap_uv_texel_size se ignora si gen_lightmap_uv es false. Véase también get_bake_meshes(), que se basa en la salida de este método.
Nota: Llamar a este método no procesará realmente los lightmaps, ya que el baking del lightmap se realiza utilizando el nodo LightmapGI.
Vector3 map_to_local(map_position: Vector3i) const 🔗
Devuelve la posición de una celda de la cuadrícula en el espacio de coordenadas local de GridMap. Para convertir el valor devuelto en coordenadas globales, usa Node3D.to_global(). Véase también local_to_map().
void resource_changed(resource: Resource) 🔗
Obsoleto: Use Resource.changed instead.
Este método no hace nada.
void set_cell_item(position: Vector3i, item: int, orientation: int = 0) 🔗
Establece el índice de la malla para la celda referenciada por sus coordenadas de la cuadrícula.
Un índice de elemento negativo como INVALID_CELL_ITEM borrará la celda.
Opcionalmente, se puede pasar la orientación del elemento. Para ver los valores de orientación válidos, véase get_orthogonal_index_from_basis().
void set_collision_layer_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_layer, dado un layer_number entre 1 y 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_mask, dado un layer_number entre 1 y 32.
Establece el RID del mapa de navegación que este nodo GridMap debe usar para sus mallas de navegación procesadas por celdas.