gpt4 book ai didi

java - Java 中的 2d 地形生成器出现问题

转载 作者:行者123 更新时间:2023-12-01 14:03:46 25 4
gpt4 key购买 nike

由于某种原因, block 一直在相同的位置渲染。有人可以帮助我吗?

Block[][] chunk = new Block[Chunk.CHUNK_WIDTH_BLOCKS][Chunk.CHUNK_HEIGHT_BLOCKS];
float[][] positions = new float[Chunk.CHUNK_WIDTH_BLOCKS][Chunk.CHUNK_HEIGHT_BLOCKS];
float frequency = 1.0f / (float) chunk.length;

for (int x = 0; x < chunk.length - 1; x++)
{
for (int y = 0; y < chunk[x].length - 1; y++)
{
positions[x][y] = SimplexNoise.Generate((float) x * frequency, (float) y * frequency);
g.drawRect(positions[x][0], positions[0][y], Block.BLOCK_WIDTH, Block.BLOCK_HEIGHT);
}
}

for (int x = 0; x < Chunk.CHUNK_WIDTH_BLOCKS; x++)
{
for (int y = 0; y < Chunk.CHUNK_HEIGHT_BLOCKS; y++)
{
if (positions[x][y] < 0f)
chunk[x][y] = new Block();
if (positions[x][y] >= -0f)
chunk[x][y] = new Block();
}
}

最佳答案

您的代码存在多个问题。例如:

for (int x = 0; x < chunk.length - 1; x++) 

应该是:

for (int x = 0; x < chunk.length; x++)

此外,请考虑以下事项:

g.drawRect(positions[x][0], positions[0][y], Block.BLOCK_WIDTH, Block.BLOCK_HEIGHT);

这不会使用“positions[x][y]”中的所有值...我认为您想要的是数组为 3d...例如:

float[][][] positions = new float[Chunk.CHUNK_WIDTH_BLOCKS][Chunk.CHUNK_HEIGHT_BLOCKS][2];

这样:posistions[x][y][0] 是 x 的值,positions[x][y][1] 是 y 的值......

g.drawRect(positions[x][y][0], positions[x][y][1], Block.BLOCK_WIDTH, Block.BLOCK_HEIGHT);

我不确定我是否完全理解您的代码,但它似乎确实有问题。

关于java - Java 中的 2d 地形生成器出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com