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);
}
}
모든 반복 할 어떤 Coordinate
에 dungeonMap
와 (좌표는 카메라 프러스 텀에있는 경우) 글로벌과 타일을 그립니다 tileSize
오프셋.