2013-03-10 18 views
7

LibGDX ve döşenmiş haritalar ile ilgili bir sorun yaşıyorum. Ben Corona SDK (Lua) gelir ve ben Lime (tmx haritalar işlemek için üçüncü parti lib) kullandım, şimdi LibGDX geçti ve bu gerçekten son özellik izledi: GraphicsTileMapsLibGDX: İzometrik bir harita üzerinde nasıl animasyon yapılır?

Bir izometrik haritayı yüklemek başardı varlığı görüntülemek için IsometricTiledMapRenderer öğesini ve haritayı görüntülemek için OrthographicCamera öğelerini kullanın (tüm bunlar wiki sayfasında açıklandığı şekilde çalışır). Ben de programlı harita katmanı üzerindeki bazı karo doldurmak başardı ama AnimatedTiledMapTile kullanmaya çalıştığınızda benim problem, başlar:

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

Birisi yardım edebilir mi? TideMapLoader için bir AnimatedTiledMapTile kullanım örneği buldum ama "kiremitli eşlemesi" ("gelgiti haritası") kullanmıyorum. Ancak .. birisi belirli bir döşemede nasıl animasyon yapabileceğimi açıklayabilir mi?

+0

Hangi problemle karşılaşıyorsunuz? – Exikle

+0

, "renderer =" setCell öğesinin son 2 satırındaki gibi, hareketli bir karoya sahipse, Nullpoint Exception –

+0

, player tile olarak ayarlamayı (0,0) deneyin. Emin olmamakla birlikte, animasyonlu bölümün yanlış olduğunu düşünüyorum. Bu, http://www.youtube.com/watch?v=xubOtuq2cEo – Exikle

cevap

3

Bu benim kendi aramda bir kaç kez aradım. Ama şimdi işe koyuldu.

En iyi tahmininiz, döşemenizin 7 veya 8 fayans içermemesidir.

ben aşağıdaki kod çalışmak lazım:

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

Sadece getTile (1) ve getTile (2) idi = null - Ben sadece 2 fayans vardı!. (Benim beladım, getTile (0) ilk kiremit değildi .. getTile (1) öyleydi!)

+0

çok fazla yardımcı olabilir, sorun kiremit içerisindeydi, tileset.getTile (8) önerilen teklifi ekledikten sonra null döndürür. –

İlgili konular