Loading...
Loading...
Build and edit tile-based 2D levels in Godot 4.3+ with TileMapLayer and TileSet: paint layers, set up collision/navigation/custom-data on tiles, autotile with terrain sets, and read/write cells from code (set_cell, get_cell_tile_data, local_to_map). Use when working with TileMapLayer nodes, .tres TileSets, autotiling, or migrating a deprecated TileMap node to TileMapLayer.
npx skill4agent add gamedev-skills/awesome-gamedev-agent-skills godot-tilemapTileMapLayerTileSetTileMapLayerTileMapTileSetTileMapTileMapLayergodot-2d-movementgodot-physicsprocedural-genlevel-designTileMapLayerTileSettile_set.tresdamageis_laddercollision_enablednavigation_enabledlocal_to_mapset_cellget_cell_source_idget_cell_tile_data(...).get_custom_data(...)extends TileMapLayer
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventMouseButton and event.pressed:
# local_to_map expects local coords; convert from global first.
var cell := local_to_map(to_local(event.position))
var data := get_cell_tile_data(cell) # TileData or null
if data:
var dmg: int = data.get_custom_data("damage") # custom data layer
print("Cell %s deals %d damage" % [cell, dmg])# set_cell(coords, source_id, atlas_coords, alternative_tile = 0)
func place_wall(cell: Vector2i) -> void:
set_cell(cell, 0, Vector2i(2, 1)) # source 0, atlas tile at column 2, row 1
func dig(cell: Vector2i) -> void:
erase_cell(cell) # same as set_cell(cell, -1)
func clear_level() -> void:
clear() # remove every tile on this layer# Paint a filled area with terrain `terrain` of terrain set `terrain_set`;
# Godot picks the correct edge/corner tiles to connect them.
func fill_with_grass(cells: Array[Vector2i]) -> void:
var terrain_set := 0
var grass_terrain := 0
set_cells_terrain_connect(cells, terrain_set, grass_terrain, true)func find_spawns() -> Array[Vector2i]:
var spawns: Array[Vector2i] = []
for cell in get_used_cells():
var data := get_cell_tile_data(cell)
if data and data.get_custom_data("is_spawn"):
spawns.append(cell)
return spawnsTileMapTileMapLayerNode2DTileMaplayerset_cell(layer, ...)TileMapLayerlocal_to_mapto_local(...)get_cell_tile_datanullget_custom_dataintintset_cells_terrain_connectset_cellupdate_internals()collision_enabled_use_tile_data_runtime_updatereferences/tileset-and-terrains.mdgodot-2d-movementgodot-physicsprocedural-genlevel-designroguelike