Up to date
This page is up to date for Godot 4.1
.
If you still find outdated information, please open an issue.
TileMap¶
Inherits: Node2D < CanvasItem < Node < Object
Node for 2D tile-based maps.
Description¶
Node for 2D tile-based maps. Tilemaps use a TileSet which contain a list of tiles which are used to create grid-based maps. A TileMap may have several layers, layouting tiles on top of each other.
Tutorials¶
Properties¶
|
||
|
||
|
||
|
||
Methods¶
void |
_tile_data_runtime_update ( int layer, Vector2i coords, TileData tile_data ) virtual |
_use_tile_data_runtime_update ( int layer, Vector2i coords ) virtual |
|
void |
|
void |
clear ( ) |
void |
clear_layer ( int layer ) |
void |
erase_cell ( int layer, Vector2i coords ) |
void |
|
void |
force_update ( int layer=-1 ) |
get_cell_alternative_tile ( int layer, Vector2i coords, bool use_proxies=false ) const |
|
get_cell_atlas_coords ( int layer, Vector2i coords, bool use_proxies=false ) const |
|
get_cell_source_id ( int layer, Vector2i coords, bool use_proxies=false ) const |
|
get_cell_tile_data ( int layer, Vector2i coords, bool use_proxies=false ) const |
|
get_coords_for_body_rid ( RID body ) |
|
get_layer_for_body_rid ( RID body ) |
|
get_layer_modulate ( int layer ) const |
|
get_layer_name ( int layer ) const |
|
get_layer_y_sort_origin ( int layer ) const |
|
get_layer_z_index ( int layer ) const |
|
get_layers_count ( ) const |
|
get_navigation_map ( int layer ) const |
|
get_neighbor_cell ( Vector2i coords, CellNeighbor neighbor ) const |
|
get_pattern ( int layer, Vector2i[] coords_array ) |
|
get_surrounding_cells ( Vector2i coords ) |
|
get_used_cells ( int layer ) const |
|
get_used_cells_by_id ( int layer, int source_id=-1, Vector2i atlas_coords=Vector2i(-1, -1), int alternative_tile=-1 ) const |
|
get_used_rect ( ) |
|
is_layer_enabled ( int layer ) const |
|
is_layer_y_sort_enabled ( int layer ) const |
|
local_to_map ( Vector2 local_position ) const |
|
map_pattern ( Vector2i position_in_tilemap, Vector2i coords_in_pattern, TileMapPattern pattern ) |
|
map_to_local ( Vector2i map_position ) const |
|
void |
move_layer ( int layer, int to_position ) |
void |
remove_layer ( int layer ) |
void |
set_cell ( int layer, Vector2i coords, int source_id=-1, Vector2i atlas_coords=Vector2i(-1, -1), int alternative_tile=0 ) |
void |
set_cells_terrain_connect ( int layer, Vector2i[] cells, int terrain_set, int terrain, bool ignore_empty_terrains=true ) |
void |
set_cells_terrain_path ( int layer, Vector2i[] path, int terrain_set, int terrain, bool ignore_empty_terrains=true ) |
void |
set_layer_enabled ( int layer, bool enabled ) |
void |
set_layer_modulate ( int layer, Color modulate ) |
void |
set_layer_name ( int layer, String name ) |
void |
set_layer_y_sort_enabled ( int layer, bool y_sort_enabled ) |
void |
set_layer_y_sort_origin ( int layer, int y_sort_origin ) |
void |
set_layer_z_index ( int layer, int z_index ) |
void |
set_navigation_map ( int layer, RID map ) |
void |
set_pattern ( int layer, Vector2i position, TileMapPattern pattern ) |
Signals¶
changed ( )
Emitted when the TileSet of this TileMap changes.
Enumerations¶
enum VisibilityMode:
VisibilityMode VISIBILITY_MODE_DEFAULT = 0
Use the debug settings to determine visibility.
VisibilityMode VISIBILITY_MODE_FORCE_HIDE = 2
Always hide.
VisibilityMode VISIBILITY_MODE_FORCE_SHOW = 1
Always show.
Property Descriptions¶
int cell_quadrant_size = 16
The TileMap's quadrant size. Optimizes drawing by batching, using chunks of this size.
bool collision_animatable = false
If enabled, the TileMap will see its collisions synced to the physics tick and change its collision type from static to kinematic. This is required to create TileMap-based moving platform.
Note: Enabling collision_animatable may have a small performance impact, only do it if the TileMap is moving and has colliding tiles.
VisibilityMode collision_visibility_mode = 0
void set_collision_visibility_mode ( VisibilityMode value )
VisibilityMode get_collision_visibility_mode ( )
Show or hide the TileMap's collision shapes. If set to VISIBILITY_MODE_DEFAULT, this depends on the show collision debug settings.
void set_navigation_visibility_mode ( VisibilityMode value )
VisibilityMode get_navigation_visibility_mode ( )
Show or hide the TileMap's navigation meshes. If set to VISIBILITY_MODE_DEFAULT, this depends on the show navigation debug settings.
TileSet tile_set
The assigned TileSet.
Method Descriptions¶
void _tile_data_runtime_update ( int layer, Vector2i coords, TileData tile_data ) virtual
Called with a TileData object about to be used internally by the TileMap, allowing its modification at runtime.
This method is only called if _use_tile_data_runtime_update is implemented and returns true
for the given tile coords
and layer
.
Warning: The tile_data
object's sub-resources are the same as the one in the TileSet. Modifying them might impact the whole TileSet. Instead, make sure to duplicate those resources.
Note: If the properties of tile_data
object should change over time, use force_update to trigger a TileMap update.
bool _use_tile_data_runtime_update ( int layer, Vector2i coords ) virtual
Should return true
if the tile at coordinates coords
on layer layer
requires a runtime update.
Warning: Make sure this function only return true
when needed. Any tile processed at runtime without a need for it will imply a significant performance penalty.
void add_layer ( int to_position )
Adds a layer at the given position to_position
in the array. If to_position
is negative, the position is counted from the end, with -1
adding the layer at the end of the array.
void clear ( )
Clears all cells.
void clear_layer ( int layer )
Clears all cells on the given layer.
void erase_cell ( int layer, Vector2i coords )
Erases the cell on layer layer
at coordinates coords
.
void fix_invalid_tiles ( )
Clears cells that do not exist in the tileset.
void force_update ( int layer=-1 )
Triggers an update of the TileMap. If layer
is provided, only updates the given layer.
Note: The TileMap node updates automatically when one of its properties is modified. A manual update is only needed if runtime modifications (implemented in _tile_data_runtime_update) need to be applied.
Warning: Updating the TileMap is computationally expensive and may impact performance. Try to limit the number of updates and the tiles they impact (by placing frequently updated tiles in a dedicated layer for example).
int get_cell_alternative_tile ( int layer, Vector2i coords, bool use_proxies=false ) const
Returns the tile alternative ID of the cell on layer layer
at coords
. If use_proxies
is false
, ignores the TileSet's tile proxies, returning the raw alternative identifier. See TileSet.map_tile_proxy.
Vector2i get_cell_atlas_coords ( int layer, Vector2i coords, bool use_proxies=false ) const
Returns the tile atlas coordinates ID of the cell on layer layer
at coordinates coords
. If use_proxies
is false
, ignores the TileSet's tile proxies, returning the raw alternative identifier. See TileSet.map_tile_proxy.
int get_cell_source_id ( int layer, Vector2i coords, bool use_proxies=false ) const
Returns the tile source ID of the cell on layer layer
at coordinates coords
. Returns -1
if the cell does not exist.
If use_proxies
is false
, ignores the TileSet's tile proxies, returning the raw alternative identifier. See TileSet.map_tile_proxy.
TileData get_cell_tile_data ( int layer, Vector2i coords, bool use_proxies=false ) const
Returns the TileData object associated with the given cell, or null
if the cell does not exist or is not a TileSetAtlasSource.
If use_proxies
is false
, ignores the TileSet's tile proxies, returning the raw alternative identifier. See TileSet.map_tile_proxy.
func get_clicked_tile_power():
var clicked_cell = tile_map.local_to_map(tile_map.get_local_mouse_position())
var data = tile_map.get_cell_tile_data(0, clicked_cell)
if data:
return data.get_custom_data("power")
else:
return 0
Vector2i get_coords_for_body_rid ( RID body )
Returns the coordinates of the tile for given physics body RID. Such RID can be retrieved from KinematicCollision2D.get_collider_rid, when colliding with a tile.
int get_layer_for_body_rid ( RID body )
Returns the tilemap layer of the tile for given physics body RID. Such RID can be retrieved from KinematicCollision2D.get_collider_rid, when colliding with a tile.
Color get_layer_modulate ( int layer ) const
Returns a TileMap layer's modulate.
String get_layer_name ( int layer ) const
Returns a TileMap layer's name.
int get_layer_y_sort_origin ( int layer ) const
Returns a TileMap layer's Y sort origin.
int get_layer_z_index ( int layer ) const
Returns a TileMap layer's Z-index value.
int get_layers_count ( ) const
Returns the number of layers in the TileMap.
Returns the NavigationServer2D navigation map RID currently assigned to the specified TileMap layer
.
By default the TileMap uses the default World2D navigation map for the first TileMap layer. For each additional TileMap layer a new navigation map is created for the additional layer.
In order to make NavigationAgent2D switch between TileMap layer navigation maps use NavigationAgent2D.set_navigation_map with the navigation map received from get_navigation_map.
Vector2i get_neighbor_cell ( Vector2i coords, CellNeighbor neighbor ) const
Returns the neighboring cell to the one at coordinates coords
, identified by the neighbor
direction. This method takes into account the different layouts a TileMap can take.
TileMapPattern get_pattern ( int layer, Vector2i[] coords_array )
Creates a new TileMapPattern from the given layer and set of cells.
Vector2i[] get_surrounding_cells ( Vector2i coords )
Returns the list of all neighbourings cells to the one at coords
.
Vector2i[] get_used_cells ( int layer ) const
Returns a Vector2i array with the positions of all cells containing a tile in the given layer. A cell is considered empty if its source identifier equals -1, its atlas coordinates identifiers is Vector2(-1, -1)
and its alternative identifier is -1.
Vector2i[] get_used_cells_by_id ( int layer, int source_id=-1, Vector2i atlas_coords=Vector2i(-1, -1), int alternative_tile=-1 ) const
Returns a Vector2i array with the positions of all cells containing a tile in the given layer. Tiles may be filtered according to their source (source_id
), their atlas coordinates (atlas_coords
) or alternative id (alternative_tile
).
If a parameter has it's value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default value, this method returns the same result as get_used_cells.
A cell is considered empty if its source identifier equals -1, its atlas coordinates identifiers is Vector2(-1, -1)
and its alternative identifier is -1.
Rect2i get_used_rect ( )
Returns a rectangle enclosing the used (non-empty) tiles of the map, including all layers.
bool is_layer_enabled ( int layer ) const
Returns if a layer is enabled.
bool is_layer_y_sort_enabled ( int layer ) const
Returns if a layer Y-sorts its tiles.
Vector2i local_to_map ( Vector2 local_position ) const
Returns the map coordinates of the cell containing the given local_position
. If local_position
is in global coordinates, consider using Node2D.to_local before passing it to this method. See also map_to_local.