1

在旧的 libgdx map api 中,他们曾经有

map = TiledLoader.createMap(Gdx.files.internal("maps/testmap.tmx"));
atlas = new TileAtlas(map, Gdx.files.internal("maps"));
tileMapRenderer = new TileMapRenderer(map, atlas, 8, 8); 

然而,在新的 libgdx 中,规则发生了变化,加载 tilemap 不再需要先使用 map packer。您可以直接将 .tmx 文件与 tileset png 一起使用。像下面这样的东西会起作用,然后调用 render.

TiledMap map = new TmxMapLoader().load("maps/testmap.tmx");

我的问题是用于生成 .tmx 文件的原始 tileselt.png,它的大小不是 2 的幂。所以我仍然必须使用纹理打包器或地图打包器来打包它以供使用。

我无法成功地将打包文件与 .tmx 关联;

有没有办法解决这个问题?

谢谢

4

2 回答 2

4

如果您以 GLES 1.0 为目标,您将需要二次方图块集。某些设备可能允许 GLES 1.0 的非二次幂,但不能保证。在 GLES 2.0 中,这个限制被解除了,但是你仍然可以从二次幂中获得更好的性能。

您仍然可以使用 TiledMapPacker 生成的地图,您只需要使用AtlasTmxMapLoader而不是加载地图TmxMapLoader

于 2013-08-25T13:12:08.013 回答
1

它们不需要是二的幂。如果您遇到问题,就像您在Texture.setEnforcePotImages(false);MainClass 中获得两个错误集的力量一样。

您不再需要打包程序,所以我认为您无法将打包程序关联到 tmx 文件。

如果您使用TmxMapLoader图块集,则需要位于文件的同一文件夹中.tmx。如果它们位于不同的目录中,则需要在.tmx文件中配置源路径。这是一个例子:

<tileset firstgid="257" name="mountain" tilewidth="32" tileheight="32">
  <image source="mountain.png" width="512" height="512"/>
</tileset>

是 Tiled 的常规输出。如果 Tileset 在例如配置里面,你需要像这样改变它:

<tileset firstgid="257" name="mountain" tilewidth="32" tileheight="32">
  <image source="config/mountain.png" width="512" height="512"/>
</tileset>

但它仍然需要是 tmx 文件所在路径的子文件夹。

问候希望这可能会有所帮助。

于 2013-08-23T11:38:52.383 回答