【问题标题】:Unity3d - How to create a world generator like in OpenTTD?Unity3d - 如何创建像 OpenTTD 中的世界生成器?
【发布时间】:2014-02-27 21:56:13
【问题描述】:

我在 Unity3d 中尝试了一些东西,但我偶然发现无法创建一个简单的世界生成器。基本上我希望世界生成器创建一个类似于 OpenTTD 世界生成的世界(仅适用于地形和水,而不是建筑物或森林或其他任何东西)。

我遇到的问题是,我只能带着更多朝着类似 Minecraft 的世界一代的方向发展的东西,这正是我不想要的。我通常最终会遇到某种区块雷区,而不是像 OpenTTD 这样的美好世界。

我想知道是否有人对世界生成有经验并且能够为我指出正确的方向。

很遗憾,我没有要显示的代码,因为我因多次失败而一怒之下删除了我的代码。

如果我把它发错了地方,我很抱歉,但它似乎只是合乎逻辑的地方。

【问题讨论】:

标签: random unity3d generator


【解决方案1】:

我使用 LibNoise 来生成世界。 Here 是移植到统一的。我正在使用它here,但没有渐变或任何东西,所以它不会切断来制作“地形”。实际的 C++ libnoise 有很多关于如何生成地形的教程,c++ libnoise link

我的体素速度测试:

    Perlin perlin = new Perlin((double)frequency, (double)lacunarity, (double)persistence, octaves, seed, QualityMode.High);
    RidgedMultifractal fractal = new RidgedMultifractal((double)frequency, (double)lacunarity, octaves, seed, QualityMode.High);

    ModuleBase noise = new Add(perlin, fractal);

    for (int x = 0; x < chunkSize; x++)
    {
        for (int y = 0; y < chunkSize; y++)
        {
            for (int z = 0; z < chunkSize; z++)
            {


                if (noise.GetValue(global) < .5) // or if you want it to look like terrain change to (chunkPos.y * chunkSize) + y <= (Noise.GetValue(global + 1) / 2) * height
                {
                    //add here
                }
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多