我总是为地图中的第一个元素获取 gid == 1,即使使用相同的图块集也是如此。保存的文件“example.tmx”具有使用 CVS 编码的值。我用 txt 编辑器打开文件,它看起来像这样:
<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(...)