Координаты чанка карты тайлов Java - PullRequest
0 голосов
/ 28 сентября 2019

Я делаю 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

Моя игра:

enter image description here

Если вы посмотрите в верхний левый угол, вы увидите, как вырезается самый первый столбец x = 0выключено, это из-за того, что я пытаюсь получить правильную мировую позицию, для каждого куска мировая позиция чанка смещается на 1 плитку, это также происходит при падении, но верхний столбец смещается на 1 плитку вниз.

Что я хочув цикле будет получаться каждая четверть мира (из-за размеров, которые я упоминал ранее), куски не должны перекрывать друг друга плитки, в настоящий момент они перекрывают 15 столбцов друг друга плиток.

Все, что мне нужно, это правильная математика, чтобы получить правильную позицию в мире для каждого куска.Если это невозможно, какое другое решение будет лучше.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...