7

LibGDXとタイルマップに問題があります。私はCoronaSDK(Lua)から来て、Lime(tmxマップを処理するためのサードパーティのlib)を使用しましたが、今はLibGDXに切り替えて、この非常に最近の機能に従いました。GraphicsTileMaps

IsometricTiledMapRendererレンダラーとして使用し、マップを表示するためにアセットからアイソメマップをロードすることができましたOrthographicCamera(すべてwikiページで説明されているように機能します)。また、プログラムでマップレイヤーのタイルを塗りつぶすこともできましたが、次を使用しようとすると問題が発生します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);
    ...

誰かが助けることができますか?AnimatedTiledMapTileの使用例を見つけましたが、「タイドマップ」(「タイドTideMapLoaderマップ」ではない)を使用していることはわかっています。ただし、特定のタイルでアニメーションを作成する方法を誰かが説明できますか?

4

1 に答える 1

4

私の自己を検索するためにこれによって数回されました。しかし、今それを機能させました。

最良の推測は、タイルセットに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つしかありませんでした。(私の問題は、getTile(0)が最初のタイルではなかったことです。getTile(1)は最初のタイルでした!)

于 2013-09-24T15:56:15.890 に答える