我正在用 Java 制作一个 2d 游戏(这无关紧要,但有人会问),目前我有随机生成的 tilemap,我将地图加载到许多 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 列。
我所需要的只是正确的数学运算来为每个块获得正确的世界位置。如果这是不可能的,那么其他解决方案会更好。谢谢。
