libgdx에서 절차 적으로 생성 된 타일을 어떻게 구현합니까? 게임을 만들고 있는데,

libgdx에서 간단한 하향식 젤다-풍경 게임을 만들고 있는데, 이와 유사하게 절차 적으로 생성 된 타일 기반 던전을 구현하고 싶습니다 .

Libgdx에는 TiledMap이라는 클래스가있어 내 요구에 맞는 것처럼 보이지만 공식 문서 외부의 문서는 TiledMaps를 .tmx 파일 또는 다른 말로 미리 디자인 된 맵과 함께 사용할 수 있다고 제안합니다. 나는 상당한 양의 인터넷 검색을 사용하지 않았으므로 누군가가 동적으로 생성 된 타일 맵에 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 : 원래 링크 된 알고리즘을 사용하여 던전을 생성하고 Coordinate에서 만든 클래스를 사용하여 픽셀 좌표가 아닌 타일 좌표를 저장 합니다 HashMap<Coord, MapTile>. MapTile타일 ​​유형에 대한 데이터가있는 클래스 일뿐입니다.

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

        }

모든 반복 할 어떤 CoordinatedungeonMap와 (좌표는 카메라 프러스 텀에있는 경우) 글로벌과 타일을 그립니다 tileSize오프셋.