简体   繁体   English

LibGDX:如何在等距平铺地图上做动画?

[英]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"). 我找到了TideMapLoaderAnimatedTiledMapTile用法示例,但我知道我使用的是“ 平铺地图”(不是“ 潮汐地图”)。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM