当我向我的图块添加属性时,属性会映射到tileID - 1
。我知道0表示<layer data>
上的空图块。这让我困惑了很长一段时间,直到我注意到它。显而易见的解决方法是在解析文件时将属性增加1。但有人知道为什么会这样吗?我错过了什么,或者这是否是正常行为?
实施例
以下是我的TMX的一部分:
<tile id="0">
<properties>
<property name="floor" value="floor"/>
</properties>
</tile>
<tile id="1">
<properties>
<property name="PassableNorth" value="0"/>
</properties>
</tile>
<tile id="2">
<properties>
<property name="PassableEast" value="0"/>
</properties>
</tile>
</tileset>
<layer name="Floor" width="8" height="8">
<data encoding="csv">
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1
</data>
</layer>
<layer name="Wall" width="8" height="8">
<data encoding="csv">
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,3,3,5,3,0,0,
0,0,2,0,0,0,0,0,
0,0,4,0,0,0,0,0,
0,0,2,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0
</data>
</layer>
如您所见,0属性被映射到墙层的空区块。 GID 2和3是我的实际北墙和东墙,但在属性部分中称为1和2。
答案 0 :(得分:2)
您的XML代码段在tileset
元素上省略了相关属性,即firstgid="1"
。
地图可以有多个图块集,因此使用跨越所有这些图块集的全局ID来引用地图上使用的图块。相反,tileset
元素内的tile定义使用本地tile ID。它们之间的偏移量由firstgid
属性定义,该属性代表&#34;第一个全局ID&#34;因为它是引用tileset中第一个tile的全局id。
有关此内容的更多详细信息,请访问https://github.com/bjorn/tiled/wiki/TMX-Map-Format#data