Несколько слоев TiledMap не отображаютсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Несколько слоев TiledMap не отображаются

Сообщение Anonymous »

У меня возникли проблемы с рендерингом нескольких слоев плитки в одном программно созданном TiledMap в LibGDX.
Я пытался сделать так, чтобы слой пола (первый цикл for) получал генерируется под процедурно сгенерированными слоями (второй цикл for), но он отображает только то, что было добавлено до первого вызова Layers.add();, который является моим нижним слоем. Есть ли что-то, что мне здесь явно не хватает?

Код: Выделить всё

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;
}
}
Обновление (19.04.2024):
Я отказался от попыток сделать это с помощью TiledMap и вместо этого просто прибегнул к 3D-массиву


Подробнее здесь: https://stackoverflow.com/questions/781 ... -rendering
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»