簡體   English   中英

LibGDX:如何在等距平鋪地圖上做動畫?

[英]LibGDX: How to do animations on an isometric tiled map?

我對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);
    ...

有人可以幫忙嗎? 我找到了TideMapLoaderAnimatedTiledMapTile用法示例,但我知道我使用的是“ 平鋪地圖”(不是“ 潮汐地圖”)。 但是,有人可以解釋我如何在特定的瓷磚上制作動畫?

一直在尋找我自己。 但現在讓它發揮作用。

最好的猜測是你的瓷磚組沒有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)!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM