首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >平铺/ pytmx -在不同地图中为相同图像获取相同gid的问题

平铺/ pytmx -在不同地图中为相同图像获取相同gid的问题
EN

Stack Overflow用户
提问于 2020-09-22 06:36:34
回答 1查看 65关注 0票数 0

我总是为地图中的第一个元素获取gid == 1,即使使用相同的平铺集也是如此。保存的文件"example.tmx“的值是用CVS编码的。我用txt编辑器打开文件,它看起来像这样:

代码语言:javascript
复制
<data encoding="csv">
24,24,19,24,24,22,19,23,18,23,2
...

这太棒了。第一个元素是24‘瓦片。但是当我用pytmx加载map时,我试图得到x,y,gid,这是不同的。

代码语言:javascript
复制
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

打印值为(first == x,second == y,third == gid,last == id):

代码语言:javascript
复制
0 0 1 0
1 0 1 1
2 0 1 2 ...

对于所有的地图,第一个gid总是"1“,但它在不同的地图中描述不同的瓦片。

使用ti(gid) / get_tile_image_by_gid可以得到正确的图像。但我希望使用gid number来进行其他思考,比如:

代码语言:javascript
复制
if gid == 1:
    self.grass_group.append(...)
else:
    self.other_group.append(...)
EN

回答 1

Stack Overflow用户

发布于 2020-09-22 18:39:31

好了,我解决了。

在pytmx中,"register_gid“对我来说不能正常工作。我需要做这样的列表:

代码语言:javascript
复制
self.listtiles = [z for z in tm.gidmap]

然后当我遍历layer中的每个元素时,我可以从这个列表中获得它。

代码语言:javascript
复制
if layer.name == "layer1": 
    for x, y, gid in layer:
        # old wrong
        print(x, y, gid, self.id)   
        # new correct
        print(x, y, self.listtiles[int(gid - 1)], self.id)    
        tile = ti(gid)
        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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64000792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档