1

当我将属性添加到我的图块时,属性会映射到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。

4

1 回答 1

2

您的 XML 片段遗漏了tileset元素上的相关属性,即firstgid="1".

一张地图可以有多个瓦片集,因此地图上使用的瓦片使用跨越所有这些瓦片集的全局 ID 来引用。相反,tileset元素内的图块定义使用本地图块 ID。它们之间的偏移量由firstgid属性定义,该属性代表“第一个全局 id”,因为它是引用瓦片集中第一个瓦片的全局 id。

有关这方面的更多详细信息,请访问https://github.com/bjorn/tiled/wiki/TMX-Map-Format#data

于 2014-08-21T10:46:27.100 回答