我正在尝试使用墙属性为真计算图层中的图块。 在我的TMX文件中,我已经设置了属性,所以我确信它就在那里,你可以在这里看到:
TMX XML:
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="212" height="20" tilewidth="16"
tileheight="16">
<tileset firstgid="1" name="tileSet-hd" tilewidth="16" tileheight="16">
<image source="gfx/tile_set.png" trans="fe80fe" width="256" height="256"/>
</tileset>
<layer name="background" width="212" height="20">
<data encoding="base64" compression="zlib">
</data>
</layer>
<layer name="walls" width="212" height="20">
<properties>
<property name="wall" value="true"/>
</properties>
<data encoding="base64" compression="zlib">
</data>
</layer>
<layer name="hazards" width="212" height="20">
<data encoding="base64" compression="zlib">
</data>
</layer>
</map>
CODE:
try {
final TMXLoader tmxLoader = new TMXLoader(activity.getAssets(),
activity.getTextureManager(),
TextureOptions.BILINEAR_PREMULTIPLYALPHA,
engine.getVertexBufferObjectManager(),
new ITMXTilePropertiesListener() {
@Override
public void onTMXTileWithPropertiesCreated(
final TMXTiledMap pTMXTiledMap,
final TMXLayer pTMXLayer,
final TMXTile pTMXTile,
final
TMXProperties<TMXTileProperty> pTMXTileProperties) {
if
(pTMXTileProperties.containsTMXProperty("wall","true")) {
mTilesCount++;
}
}
});
this.mTMXTiledMap = tmxLoader.loadFromAsset("gfx/level1.tmx");
Log.d("aaaaaa", "tiles count: " + mTilesCount);
} catch (final TMXLoadException e) {
Debug.e(e);
}
final TMXLayer tmxLayerBcg = this.mTMXTiledMap.getTMXLayers().get(0);
final TMXLayer tmxLayerWalls = this.mTMXTiledMap.getTMXLayers().get(1);
final TMXLayer tmxLayerTraps = this.mTMXTiledMap.getTMXLayers().get(2);
gameScene.attachChild(tmxLayerBcg);
gameScene.attachChild(tmxLayerWalls);
gameScene.attachChild(tmxLayerTraps);
// end of loading TMX
在结论中,我想创建一个我的玩家可以踩在墙上的瓷砖。但我甚至无法摆脱这个问题。 日志始终显示tile计数:0。但是,如果存在名称为wall且value为true的属性,则为什么。
我受到一些教程的指导并使用了这些示例:
答案 0 :(得分:1)
您必须在对象图层中的平铺编辑器中创建对象。然后用Java绘制对象,将它们设置为不可见,这样就可以看到背景。