【问题标题】:Random, Infinite Terrain Generation随机、无限地形生成
【发布时间】:2015-03-21 16:53:15
【问题描述】:

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

我已经搜索了所有地方,甚至是关于如何做到这一点的提示,但我发现的所有东西要么有高度,要么没有使用单个立方体(将地形作为一个整体进行了编辑),或者不是无限的。

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

编辑:我正在寻找类似于名为 Factorio 的游戏的东西。截图如下:http://i.ytimg.com/vi/Uns15OfPWbo/maxresdefault.jpg 如您所见,这里有一大片水域,还有一大片土地。我想创建一些每次都随机执行的东西(随机的水体和随机的土地形状)。像 Minecraft 这样没有高度的东西。

我听说过一种叫做 Perlin 噪声的东西,但由于缺乏教程和文档,我终其一生都无法弄清楚如何使用它来生成随机地形。

【问题讨论】:

  • 这可能更适合 GameDev.SE。您可以使用高度并简单地忽略它。例如,如果您得到 0 if height < 127 then water else grass.

标签: c# unity3d terrain


【解决方案1】:

柏林噪音将非常适合您的需求。 它会产生自然的随机噪声。它在所有方向上都是无限的,所以基本上它的工作原理是您选择一个随机起点并将其用作基础或您的 (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 的浮点数,而另一条评论建议您将 0.5 以上的所有内容解释为陆地,将以下内容解释为水。然后你只需在那个位置实例化一个立方体,如果地形[x,y] 0.5 则将其着色为棕色(陆地),就是这样。 请记住,您可以调整比例以获得更大/更小的土地岛屿。但是 X 和 Y 必须相同,否则你会得到一个看起来很长的岛。

希望这会有所帮助或为时不晚:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2022-07-02
    • 1970-01-01
    • 2016-03-17
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多