scripts in tilesets?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By ProXFox

hello. my question is simple. can i attach a script to a tile in a tileset? i really need it because for my game each tile got some properties that i can include them in the script for tile. note that i need to access to these properties from other nodes.

i need the answer too!
i googled, it seems no one know how to do it…

huahuapro | 2020-03-28 00:33

:bust_in_silhouette: Reply From: Dr. Numerus

It is not recommended to do so. However, you can easily check for the type of tile via the tileMap node:

tile_pos = world_to_map(pos) #Maybe you don't even need this
tile_type = get_cell(tile_pos.x, tile_pos.y)

You can either get the position of the needed tile by iteration or by your mouse cursor or character position. The get_cell(…) method returns the Tile ID as an integer number. Each tile has a different ID.

Hope this helped!

if i can’t add scripts, than i must not use tilemaps! is there a way to see the name of tile? intead of its id?

ProXFox | 2019-04-27 02:39

I use the following inside TileMap:

func get_tile_name(location: Vector2) -> String:
    var position := world_to_map(location)
    var tile := get_cellv(position)
    if tile == -1:
        return ""

    return tile_set.tile_get_name(tile)

and a shorthand for finding the id:

func get_tile_id(name: String) -> int:
    return tile_set.find_tile_by_name(name)

cgx | 2020-05-08 02:03