Я делаю 2D-игру на Java (это не актуально, но кто-то спросит), и в данный момент у меня есть случайно сгенерированная карта тайлов, я загружаю карту в множество маленьких блоков размером 16x16.Я загружаю это так для лучшей производительности.Моя проблема - получить каждый кусок из мира.
Моя проблема - получить координаты для загрузки блоков этих блоков.Например, у меня есть мир размером 64x64, который будет загружен в 16 фрагментов 16x16, каждый блок имеет мировую координату из мира, чтобы получить правильные плитки для этого фрагмента.Я могу нарисовать их в данный момент, но они не получают координаты мира в другом направлении.
Вот мой код:
for(int w=0; w<this.width/Chunk.ChunkWidth; w++) {
for(int h=0; h<this.height/Chunk.ChunkHeight; h++) {
chunks.add(new Chunk(new Vector2f(w*Chunk.ChunkWidth*32,h*Chunk.ChunkHeight*32), w*Chunk.ChunkWidth,h*Chunk.ChunkHeight));
System.out.println("[ Chunk Looped Coords ] " + w*Chunk.ChunkWidth + ":" + h*Chunk.ChunkHeight);
}
}
this.width
указывает размер мира, например, 64. ChunkWidth
и ChunkHeight
относятся к высоте чанка для каждого чанка, которая всегда одинакова.Аргументы для Vector2f
существуют только для того, где на экране должен быть нарисован фрагмент, который является правильным, мой вопрос второй и третий аргумент для добавления другого фрагмента.
В моей консоли это:
[ Chunk Looped Coords ] 0:0
[ Chunk Looped Coords ] 0:16
[ Chunk Looped Coords ] 0:32
[ Chunk Looped Coords ] 0:48
[ Chunk Looped Coords ] 16:0
[ Chunk Looped Coords ] 16:16
[ Chunk Looped Coords ] 16:32
[ Chunk Looped Coords ] 16:48
[ Chunk Looped Coords ] 32:0
[ Chunk Looped Coords ] 32:16
[ Chunk Looped Coords ] 32:32
[ Chunk Looped Coords ] 32:48
[ Chunk Looped Coords ] 48:0
[ Chunk Looped Coords ] 48:16
[ Chunk Looped Coords ] 48:32
[ Chunk Looped Coords ] 48:48
Моя игра:
Если вы посмотрите в верхний левый угол, вы увидите, как вырезается самый первый столбец x = 0выключено, это из-за того, что я пытаюсь получить правильную мировую позицию, для каждого куска мировая позиция чанка смещается на 1 плитку, это также происходит при падении, но верхний столбец смещается на 1 плитку вниз.
Что я хочув цикле будет получаться каждая четверть мира (из-за размеров, которые я упоминал ранее), куски не должны перекрывать друг друга плитки, в настоящий момент они перекрывают 15 столбцов друг друга плиток.
Все, что мне нужно, это правильная математика, чтобы получить правильную позицию в мире для каждого куска.Если это невозможно, какое другое решение будет лучше.Спасибо.