我对LibGDX和平铺地图有些问题。
我来自Corona SDK(Lua),我使用Lime(第三方lib来处理tmx地图),现在我切换到了LibGDX,并遵循了这个最近的功能:GraphicsTileMaps
我能够使用IsometricTiledMapRenderer
作为渲染器和OrthographicCamera
从资源加载等轴测图来显示地图(所有工作都按照维基页面中的描述)。
我还能够以编程方式填充地图图层上的某些图块,但是当我尝试使用AnimatedTiledMapTile
时我的问题就出现了:
map = new TmxMapLoader().load(...);
TiledMapTileLayer layer = (TiledMapTileLayer) map.getLayers().getLayer("layer1");
TiledMapTileSet tileset = map.getTileSets().getTileSet("tileset1");
TiledMapTile grassTile = tileset.getTile(4);
TiledMapTile rockTile = tileset.getTile(6);
Array<StaticTiledMapTile> playerTileArr = new Array<StaticTiledMapTile>();
playerTileArr.add((StaticTiledMapTile)tileset.getTile(7));
playerTileArr.add((StaticTiledMapTile)tileset.getTile(8));
Cell grass = new Cell();
grass.setTile(grassTile);
Cell player = new Cell();
player.setTile(new AnimatedTiledMapTile(0.1f, playerTileArr));
layer.setCell(0,0, grass); // <--- This works.
layer.setCell(0,1, player); // <--- When I try this, it causes
// a NullPointerException.
renderer = IsometricTiledMapRenderer(map, 1 / 30f);
...
有人可以帮忙吗?我找到TideMapLoader
的AnimatedTiledMapTile
用法示例,但我知道我使用的是“平铺地图”(不是“潮汐地图”) 。但是,有人可以解释我如何在特定的瓷砖上制作动画?
答案 0 :(得分:3)
经过几次搜索我的自我。 但现在就开始工作了。
最好的猜测是,您的瓷砖组不具有7或8个瓷砖。
我得到了以下代码:
TiledMapTileLayer layer = (TiledMapTileLayer) map.getLayers().get(0);
TiledMapTileSet tileset = map.getTileSets().getTileSet(0);
Array<StaticTiledMapTile> at = new Array<StaticTiledMapTile>();
if (tileset.getTile(0) != null) at.add((StaticTiledMapTile) tileset.getTile(0));
if (tileset.getTile(1) != null) at.add((StaticTiledMapTile) tileset.getTile(1));
if (tileset.getTile(2) != null) at.add((StaticTiledMapTile) tileset.getTile(2));
if (tileset.getTile(3) != null) at.add((StaticTiledMapTile) tileset.getTile(3));
layer.getCell(2, 2).setTile(new AnimatedTiledMapTile(0.3f, at));
只有getTile(1)和getTile(2)是!= null - 我只有2个tile。 (我的麻烦是getTile(0)不是第一个瓷砖.. getTile(1)是!)