2013-03-10 7 views
7

LibGDXとタイルマップに問題があります。 私はコロナSDK(LUA)から来て、私はライム(TMXマップを処理するために、サードパーティ製のlibが)使用しました、今私はLibGDXに切り替えられ、これは本当に最近の機能続く:私はアイソメトリックマップをロードすることができましたGraphicsTileMapsLibGDX:アイソメのタイルマップでアニメーションを行う方法は?

をレンダラーとして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); 
    ... 

誰かが助けることはできますか?私はTideMapLoaderAnimatedTiledMapTile使用例を見つけましたが、私は "タイルマップ"( "潮汐マップ"ではありません)を使用していることを知っています。しかし、誰かが特定のタイルでどのようにアニメーションを作成できるか説明できますか?

+0

どのような問題がありますか? – Exikle

+0

"renderer ="の前の最後の2行で アニメーション化されたタイルを使用してsetCellを実行すると、ヌルポイント例外 –

+0

がプレーヤーのタイルとして設定されます。私は、あなたがアニメ化された部分が間違っているとは確信していませんが、考えています。これは、http://www.youtube.com/watch?v=xubOtuq2cEo – Exikle

答えて

3

これで私の自己を検索していました。 しかし今はうまくいった。

あなたのタイルセットには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)=ヌルだった - 私は2枚のタイルを持っていました!。 (私の問題は、getTile(0)が最初のタイルでなかったということでした)。

+0

thnks、タイルセットに問題があり、tileset.getTile(8)があなたが提案したチェックを追加した後にnullを返すのに役立ちます。 –

関連する問題