随机,无限地形生成

时间:2015-03-21 16:53:16

标签: c# unity3d terrain

我试图为我的游戏生成随机地形(在Unity3D,C#中)。我只需要水和草。它没有高度(没有山脉或山丘。)我最好通过放置单个立方体来做到这一点。最重要的是,地形需要无限。

我已经搜索过每一个地方甚至暗示如何去做,但是我发现的一切都有高度,没有使用单独的立方体(编辑地形作为一个整体),或者没有& #39; t无限。

任何帮助将不胜感激! :)

编辑:我正在寻找类似于一款名为Factorio的游戏的东西。这是一个截图:http://i.ytimg.com/vi/Uns15OfPWbo/maxresdefault.jpg正如你所看到的,有一大片水和一大片土地。我想创造一些随机做的事情(随机的水体和随机的土地形状)。像Minecraft这样没有高度的东西。

我听说过Perlin噪音,但由于缺乏教程和文档,我无法弄清楚如何使用它来生成随机地形。

1 个答案:

答案 0 :(得分:3)

Perlin噪音对您的需求非常重要。 它会产生自然的随机噪音。它在所有方向都是无限的,所以基本上它是如何工作的你选择一个随机起点并将其用作基点或你的(0,0)点。你添加了一个采样点。如果您将相同的采样点传递给它,您将得到相同的结果。那么你所要做的就是给它不同的采样点以获得不同的值,并在所有方向上展开,如下所示:

for (int x = 0; x < Width; x++) {
    for (int y = 0; z < Length ; y++) {
        terrain[x,y] = Mathf.PerlinNoise(randomLocation.x + (float)x/scale, randomLocation.y + (float)y/scale);
    }
}

然后,您可以根据玩家想去的地方或者想要生成新地形的位置,在所需的方向上扩展宽度/长度。

你的地形[,]将包含从0到1的浮点数,而另一条评论建议你将上面的所有内容解释为.5作为陆地,然后吼叫为水。然后你只是在那个位置实例化一个立方体,如果terrain [x,y] <0.5则将其颜色为蓝色(水),如果terrain [x,y]> 0.5则为棕色(陆地),那就是它。 请记住,您可以调整比例以获得更大/更小的陆地岛屿。但它必须与X和Y相同,否则你会得到一个看起来很紧张的岛屿。

希望这有助于或不会太晚:)