2013-03-10 7 views
7

У меня проблемы с LibGDX и черепичными картами. Я родом из Corona SDK (Lua), и я использовал Известь (Lib третья сторона обрабатывать TMX карты), теперь я перешел на 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); 
    ... 

Может кто-то помочь? Я нашел пример использования AnimatedTiledMapTile для TideMapLoader, но я знаю, что я использую «плитки карта» (не «tide map»). Однако .. кто-то может объяснить, как я могу сделать анимацию на определенной плитки?

+0

Какая у вас проблема? – Exikle

+0

как в последних двух строках до «renderer =» setCell с анимированной черепицей вызывает исключение 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) был = нуль - У меня было только 2 плитки!. (моя проблема была в том, что getTile (0) не был первой плиткой. getTile (1) был!)

+0

thnks много, проблема была в наборе плиток, tileset.getTile (8) возвращает null после добавления проверки, которую вы предложили. –

 Смежные вопросы

  • Нет связанных вопросов^_^