为什么属性ID与正确的瓷砖ID不匹配?

时间:2014-08-20 21:17:47

标签: xml tmx tiled

当我向我的图块添加属性时,属性会映射到tileID - 1。我知道0表示<layer data>上的空图块。这让我困惑了很长一段时间,直到我注意到它。显而易见的解决方法是在解析文件时将属性增加1。但有人知道为什么会这样吗?我错过了什么,或者这是否是正常行为?

实施例

  • 我给地砖上了一块试验地板。
  • 我给了两面墙碰撞属性PassableXXXX。

以下是我的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。

1 个答案:

答案 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