我将如何实现在libgdx程序生成的瓷砖?

我在libgdx中创建了一个简单的自上而下的塞尔达stream派游戏,并且我想实现程序化生成的基于图块的地下城,与类似

Libgdx确实有一个名为TiledMap的类,它似乎符合我的需要,但是官方文档以外的文档表明,TiledMaps只能与.tmx文件结合使用,或者换句话说就是预先devise的地图。 我做了相当多的谷歌search无济于事,所以我在这里问最后的手段,希望有人有经验使用dynamic生成的瓷砖地图的libgdx。

编辑:我可以使用StaticTiledMapTiles结合我上面链接的教程来实现我的目标?

谢谢!

您可以在不使用.tmx的情况下创建平铺的地图。

TiledMap map = new TileMap(); MapLayers layers = map.getLayers(); TiledMapTileLayer layer1 = new TiledMapTileLayer(width, height, tile_width, tile_height); Cell cell = new Cell(); cell.setTile(new StaticTiledMapTile(texture_region)); layer1.setCell(x, y, cell); layers.addLayer(layer1); Each of these classes are in the docs for libgdx. 

基于/ r / gamedev的建议,我决定放弃使用libgdx的TiledMap等内置的类,只是建立自己的。

如果有要求的话,我可以详细介绍一下,但这里是我所做的。

1:使用我最初链接的algorithm生成地下城,并使用我在HashMap<Coord, MapTile>创建的Coordinate类来存储平铺坐标(而不是像素坐标)。 MapTile只是一个具有瓦片types数据的类。

2:在我的主类的draw()函数中,我添加了下面的代码

 ConcurrentHashMap<Coord, MapTile> dungeonMap = dungeonGen.getMap(); for(Entry<Coord, MapTile> entry : dungeonMap.entrySet()){ Coord coord = entry.getKey(); MapTile tile = entry.getValue(); if((inCameraFrustum(coord.getX() * tileSize, coord.getY() * tileSize, 100))){ game.batch.draw(dungeonGen.getTileTexture(tile), coord.getX() * tileSize, coord.getY() * tileSize); } } 

它在dungeonMap每个Coordinate进行迭代,并使用全局tileSize偏移量绘制平铺(如果坐标位于相机平截头体中)。