2013-03-10 17 views
7

Ich habe ein Problem mit LibGDX und gekachelten Karten. Ich komme aus Corona SDK (Lua) und ich habe Kalk (Dritte lib tmx Karten zu handhaben) verwendet, jetzt wechselte ich zu Libgdx und folgte diesem wirklich letzte Merkmal: GraphicsTileMapsLibGDX: Wie macht man Animationen auf einer isometrischen gekachelten Karte?

konnte ich eine isometrische Karte laden von Assets mit IsometricTiledMapRenderer als Renderer und OrthographicCamera, um die Karte anzuzeigen (alles funktioniert wie auf der Wiki-Seite beschrieben). Ich war auch programmatisch eine Kachel auf der Karte Schicht füllen können, aber mein Problem beginnt, wenn ich versuche, AnimatedTiledMapTile zu verwenden:

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

Kann jemand helfen? Ich fand ein AnimatedTiledMapTile Anwendungsbeispiel für TideMapLoader, aber ich weiß, dass ich eine "gekachelte Karte" verwende (nicht eine "Gezeitenkarte"). Jedoch kann jemand erklären, wie ich eine Animation auf einer bestimmten Fliese machen kann?

+0

Welches Problem bekommen Sie? – Exikle

+0

wie in den letzten 2 Zeilen vor "renderer =" setCell mit einer animierten Kachel verursachen einen Nullpunkt Exception –

+0

versuchen Einstellung (0,0) als Spieler Kachel. Ich denke, obwohl nicht sicher, dass Sie animierte Teil ist falsch. Dies könnte http://www.youtube.com/watch?v=xubOtuq2cEo – Exikle

Antwort

3

Durch dieses ein paar Mal suchen mein Selbst. Aber jetzt funktioniert es.

Beste Schätzung ist, dass Ihr Tileset nicht 7 oder 8 Kacheln hat.

Ich habe den folgenden Code zu arbeiten:

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)); 

Nur getTile (1) und getTile (2) war = null - ich hatte nur zwei Fliesen!. (mein Problem war, dass getTile (0) war nicht die erste Kachel .. getTile (1) war!)

+0

thnks sehr hilfreich sein, das Problem lag im Tileset, und tileSet.getTile (8) gibt nach dem Hinzufügen der von Ihnen vorgeschlagenen Überprüfung null zurück. –