У меня возникли проблемы с рендерингом нескольких слоев плитки в одном программно созданном TiledMap в LibGDX.
Я пытался сделать так, чтобы слой пола (первый цикл for) получал генерируется под процедурно сгенерированными слоями (второй цикл for), но он отображает только то, что было добавлено до первого вызова Layers.add();, который является моим нижним слоем. Есть ли что-то, что мне здесь явно не хватает?
У меня возникли проблемы с рендерингом нескольких слоев плитки в одном программно созданном TiledMap в LibGDX. Я пытался сделать так, чтобы слой пола (первый цикл for) получал генерируется под процедурно сгенерированными слоями (второй цикл for), но он отображает только то, что было добавлено до первого вызова Layers.add();, который является моим нижним слоем. Есть ли что-то, что мне здесь явно не хватает? [code]public class WorldGenerator { private static Texture tiles; private static TiledMap map; public static TiledMap GenerateWorld(int mapWidth, int mapHeight, int tileWidth, int tileHeight, int exponent, int mapLayers, String noiseType) { int x; int y; int l; tiles = new Texture(Gdx.files.internal("spriteAtlas.png")); TextureRegion[][] splitTiles = TextureRegion.split(tiles, tileWidth, tileHeight); map = new TiledMap(); TiledMapTileLayer layer = new TiledMapTileLayer(mapWidth, mapHeight, tileWidth, tileHeight); MapLayers layers = map.getLayers(); x=0;y=0; for (int i = 0; i < (mapWidth * mapHeight); i++) { Cell cell = new Cell(); cell.setTile(new StaticTiledMapTile(splitTiles[1][0])); layer.setCell(x, y, cell); x++; if (x == mapWidth) { y++; x = 0; } } layers.add(layer); for (l = 0; l < mapLayers; l++) { double[] noise; switch (noiseType) { case "perlin": noise = NoiseGenerator.normalise(NoiseGenerator.perlinNoise(mapWidth, mapHeight, exponent)); break; case "smooth": noise = NoiseGenerator.normalise(NoiseGenerator.smoothNoise(mapWidth, mapHeight, exponent)); break; case "turbulence": noise = NoiseGenerator.normalise(NoiseGenerator.turbulence(mapWidth, mapHeight, exponent)); break; default: throw new IllegalStateException("Unexpected value: " + noiseType); } for (double v : noise) { Cell cell = new Cell(); if (Math.round(v) == 1) { cell.setTile(new StaticTiledMapTile(splitTiles[0][1])); } layer.setCell(x, y, cell); x++; if (x == mapWidth) { y++; x = 0; } } layers.add(layer); } return map; } } [/code] Обновление (19.04.2024): Я отказался от попыток сделать это с помощью TiledMap и вместо этого просто прибегнул к 3D-массиву