04-03-2020, 04:35 PM
Hola,
Ya ibas bien encaminado, pero hay algo que parece ser un poco confuso por la forma en que está hecho el wrapper python.
Puedes obtener información de un tile en el ámbito del Tilemap o de la capa (Layer) donde está aplicado.
Sobre un Tilemap
Tilemap.get_tile(row, col, ref Tile) te devuelve sólo la info del tile que hay definido en el archivo tmx. Le pasas la columna y la fila donde está situado el tile (fíjate que no son píixeles) y una estructura Tile, que sólo contiene un índice y unos flags de atributo
Soibre una capa Layer
Layer.get_tile(x, y, ref TileInfo) te devuelve la información sobre la capa inicializada. Le pasas las coordenadas x,y en píxeles y una estructura TileInfo que contiene mucha más información:
fíjate que la estructura es tipo TileInfo, y que el get_tile() se aplica sobre engine.layers[0], no sobre fondo0.
Ya ibas bien encaminado, pero hay algo que parece ser un poco confuso por la forma en que está hecho el wrapper python.
Puedes obtener información de un tile en el ámbito del Tilemap o de la capa (Layer) donde está aplicado.
Sobre un Tilemap
Tilemap.get_tile(row, col, ref Tile) te devuelve sólo la info del tile que hay definido en el archivo tmx. Le pasas la columna y la fila donde está situado el tile (fíjate que no son píixeles) y una estructura Tile, que sólo contiene un índice y unos flags de atributo
Soibre una capa Layer
Layer.get_tile(x, y, ref TileInfo) te devuelve la información sobre la capa inicializada. Le pasas las coordenadas x,y en píxeles y una estructura TileInfo que contiene mucha más información:
- Fila, columna, índice y flags del tile dentro del mapa tmx (lo mismo que la estructura Tile de antes)
- Puntos de corte dentro del tile (en qué pixel de dentro del tile estás exactamente)
- Un flag indicando si es un tile vacío
- Color del tile en ese punto (si hay)
- Tipo del tile (si hay)
Code:
informacion = tilengine.TileInfo()
engine.layers[0].setup(fondo0)
engine.layers[0].get_tile(self.x,self.y,informacion)
fíjate que la estructura es tipo TileInfo, y que el get_tile() se aplica sobre engine.layers[0], no sobre fondo0.