2013-03-10 3 views
7

LibGDX 및 타일 맵에 문제가 있습니다. 내가 코로나 SDK (루아)에서 와서 내가 라임을 (TMX지도를 처리하는 타사 LIB) 사용했습니다, 지금은 LibGDX로 전환이 정말 최근의 기능 다음 : GraphicsTileMapsLibGDX : 아이소 메트릭 타일 맵에서 애니메이션을 수행하는 방법은 무엇입니까?

내가 등각지도를로드 할 수있었습니다을 자산은 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); 
    ... 

누군가가 도와 드릴까요? TideMapLoader에 대한 사용 예제는 AnimatedTiledMapTile이지만 "타일을으로 바둑판 식으로 배열 한 것"을 알고 있습니다 ("조수 맵"이 아님). 그러나 .. 누군가 특정 타일에 애니메이션을 만들 수있는 방법을 설명 할 수 있습니까?

+0

어떤 문제가 발생합니까? – Exikle

+0

"renderer =" 애니메이션 타일이있는 setCell 전에 마지막 2 행과 마찬가지로 Nullpoint 예외 –

+0

은 플레이어 타일로 (0,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)이었다 = NULL - 나는 단지 2 개 타일을했다!. (제 문제는 getTile (0)이 첫 번째 타일을 잘못 만들었다는 것입니다 .. getTile (1)이!)

+0

많은 문제를 일으킬 수 있습니다. 문제는 타일셋에 있었으므로 tileset.getTile (8)은 제안한 수표를 추가 한 후 null을 반환합니다. –

관련 문제