[英]LibGDX: How to do animations on an isometric tiled map?
I've some problem with LibGDX and tiled maps. 我对LibGDX和平铺地图有些问题。 I come from Corona SDK (Lua) and I've used Lime (third party lib to handle tmx maps), now I switched to LibGDX and followed this really recent feature:
GraphicsTileMaps
我来自Corona SDK(Lua),我使用Lime(第三方lib来处理tmx地图),现在我切换到LibGDX并遵循这个最近的功能:
GraphicsTileMaps
I was able to load an isometric map from assets using IsometricTiledMapRenderer
as renderer and an OrthographicCamera
to display the map (all works as described in the wiki page). 我能够使用
IsometricTiledMapRenderer
作为渲染器和OrthographicCamera
从资源加载等轴测图来显示地图(所有工作都按照维基页面中的描述)。 I was also able to fill programmatically some tile on the map layer, but my problem starts, when I try to use AnimatedTiledMapTile
: 我还能够以编程方式填充地图图层上的一些图块,但是当我尝试使用
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 someone help? 有人可以帮忙吗? I found an
AnimatedTiledMapTile
usage example for TideMapLoader
but I know I'm using a " tiled map" (not a " tide map"). 我找到了
TideMapLoader
的AnimatedTiledMapTile
用法示例,但我知道我使用的是“ 平铺地图”(不是“ 潮汐地图”)。 However.. someone can explain how I can make an animation on a specific tile? 但是,有人可以解释我如何在特定的瓷砖上制作动画?
Been by this a few time searching my self. 一直在寻找我自己。 But got it to work now.
但现在让它发挥作用。
Best guess is that your tileset don't have 7 or 8 tiles. 最好的猜测是你的瓷砖组没有7或8个瓷砖。
I got 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) was != null - I only had 2 tiles. 只有getTile(1)和getTile(2)是!= null - 我只有2个tile。 (my trouble was that getTile(0) wasnt the first tile.. getTile(1) was!)
(我的麻烦是getTile(0)不是第一个瓷砖.. getTile(1)!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.