TileMap无法获得tile

tileLayer.getTiledTileAt为何无法获得某一个矩阵坐标的tile。返回都是undefined。



TestTileMapProject.zip (189.0 KB)

我看了论坛上官方的回复。说是forceCreate用true。可是明明瓦块已经显示。为什么还要create。

遇到过 forceCreate只能传 true,

如果只能传true。那这API有啥意义。我估计是bug。

目前tileMap 的getTiledTileAt会判断在指定序列上_tiledTiles中是否已有tiledtile,有就输出,没有的话依据是否创建新的tiledtile(forceCreate)参数,执行相关代码。
你的项目中本来就没创建过tiledtile,所以这个逻辑在你项目上表现是正常的。
你可以通过setTiledTileAt (x, y, tiledTile)先创建一个,或者参考getTiledTileAt中的逻辑创建新的tiledtile,那么之后你getTiledTileAt()穿false就有东西了。

tiledtile从字面意义上看。不就是瓦块地图上的一个瓦块么。我不理解为何我的瓦块地图添加进场景中,也可以正常显示所有的瓦块。为何还要创建每一个瓦块。麻烦您告知。:slightly_smiling:

明白了 感谢。就是说。瓦块地图上虽然显示了纹理。但是并没有关联到对象。所以需要程序猿创建个TiledTile的实体对象,然后给tilemap,然后才可以取。

这个API设计的真的 RuoZhi 我知道原来的TMX里是没有实例的 但是说明文档里也没说清楚 让开发者自己去猜 正常人都 按照
MAP - LAYER - TILED 这种去获取 结果到这一步发现获取不到了

1赞

大家看看

用了这个后
let tile1 = testdd.getTiledTileAt(0, 1, true);
let tile2 = testdd.getTiledTileAt(1, 0, true);

什么逻辑啊本以为会,获取到相应的tile
testdd.getTiledTileAt(0, 1);为空, testdd.getTiledTileAt(0, 1, true);直接把原有的弄没了,老铁厉害了

坐标处若有tile,getTiledTileAt传入false,返回的就是undefined;传入true,则原有的tile就没掉了,搞啥哦!
这么简单的api都能有bug,实习生做的吗?这个api现在就是没法用了

就是说,当一个tilemap创建好后,其中每一片tile其实都还是不有的。要用的话要现create...这个不符合人的自然思维习惯啊。为什么明明我能看到,却取不到。如果说为了性能考虑,全部不主动创建,只在实际用到的时候才生成,那在取的时候就不要给什么是否force create的参数了。全部第一次用的时候create....

我记得最底层的地面图块,就是0,你map里用另一个图层在地面上放东西,就有返回gid了

要的是Tile对象啊,一个id有啥用

大神们 谁解决了???

我都崩溃了... 想了好久 ... 闭眼就想这是为啥...

如果我自己创建tiled 我还用tiledMap 干啥? 我自己计算好了 ... 用这东西 就希望 直接绘制地图 这里居然要自己重新创建 我是佩服 ...

我自己思考了一下 ... 今天感觉这个问题也不是啥问题了!!!

getTileGIDAt 用这个 判断是否为0 就可以了 ...
getTiledTileAt undefined 就是 他们本身可能是为了减少内存压力 而没有初始化 ....

对上面的言论 表示歉意 ...

你好,请问一下你所说的,setTiledTileAt (x, y, tiledTile)中的tiledTile是个什么参数呢?如何获得自己需要的纹理的tiledTile?

你好,问题解决了吗?请问一下,如何获取某个图块单独设置它的层级呢?
如果是重新创建一个tile,所用的setTiledTileAt (x, y, tiledTile)中的tiledTile是个什么参数?如何获得自己需要的纹理的tiledTile?