LibGDX: How to make an animation on an isometric tile map?

I have problems with LibGDX and striped cards. I came from the Corona SDK (Lua) and I used Lime (a third-party lib to handle tmx cards), now I switched to LibGDX and watched this really last function: GraphicsTileMaps

I managed to load an isometric map from assets using IsometricTiledMapRenderer as a visualization tool and OrthographicCamera to display a map (everything works as described on the wiki page). I could also programmatically program some fragments on the map layer, but my problem starts when I try to use 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); ... 

Can anyone help? I found an example of using AnimatedTiledMapTile for TideMapLoader , but I know that I am using a tile map (and not a “ tide map”). However .. can someone explain how I can make animation on a specific tile?

+7
source share
1 answer

Under this, I searched for myself several times. But now it works.

It’s better to guess that your tile set doesn’t have 7 or 8 tiles.

I have the following code to work:

  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)); 

Only getTile (1) and getTile (2) were! = Null - I only had 2 tiles. (my problem is that getTile (0) was not the first tile. getTile (1) was!)

+3
source

All Articles