Я всегда получаю gid == 1 для первого элемента на картах, даже с тем же набором тайлов. Сохраненный файл example.tmx имеет значение, закодированное с помощью CVS. Я открываю файл с помощью текстового редактора, и он выглядит так:
<data encoding="csv">
24,24,19,24,24,22,19,23,18,23,2
...
Отлично. Первый элемент - 24-я плитка. Но когда я загружаю карту с помощью pytmx и пытаюсь получить x, y, gid, все по-другому.
ti = self.tmxdata.get_tile_image_by_gid
for layer in self.tmxdata.visible_layers:
#print(layer.name)
if layer.name == "layer1":
for x, y, gid in layer:
print(x, y, gid, self.id)
tile = ti(gid)
#print(self.tmxdata.get_tileset_from_gid(gid))
#print(tile)
if tile:
surface.blit(tile, (x * self.tmxdata.tilewidth + (y&1) * self.tmxdata.tilewidth / 2, y * self.tmxdata.tileheight / TILESIZE[0] * TILESIZE[1]))
self.id += 1
Печатные значения: (первый == x, второй == y, третий == gid, последний == id):
0 0 1 0
1 0 1 1
2 0 1 2 ...
И это для всех карт, первый gid всегда равен 1, но он описывает разные плитки на разных картах.
С ti (gid) / get_tile_image_by_gid он получает правильное изображение. Но я хочу использовать номер gid для других мыслей, например:
if gid == 1:
self.grass_group.append(...)
else:
self.other_group.append(...)