讨论一下我的世界地形生成算法
bbsuuo
bbsuuo 536 3
脚本 2017-01-10 00:22
组图

    最近用unity开发我的世界
    一个难点就在于地图生成,听很多人是用柏林噪声算法生成地图
    于是 我就试了试柏林噪声生成高度
    但是遇到一个问题


    柏林算法 正负值是特喵的一样的!




    导致出现的地图,在原点时候, 上下左右结构都一样,这样会导致 玩家走到原点的时候 整个地图又变成一个轴对称


    那么我的世界地图生成的算法到底怎么算的呢?
    分享:
    游客
    要评论请先登录 或者 注册
    bbsuuo 学徒 2017-01-10 00:30 1楼
    我知道把玩家初始位置定在非常远离原点的位置, 可以似乎的解决这个问题, 但是心里总有那么一根刺在那里    就感觉这个世界好像都是轴对称世界,    想知道一种更符合真实的算法
    bbsuuo 学徒 2017-01-10 00:32 2楼
    贴部分我的算法, 希望有人能指导一下
    其中moveX和moveY是玩家移动的x轴和z轴


                for (int x = -terrainSizeX+ moveX; x < terrainSizeX+moveX; x++,px++)
                {
                    for (int z = -terrainSezeY+ moveZ; z < terrainSezeY+moveZ; z++,pz++)
                    {
                  
                          int  y = (int)(Mathf.PerlinNoise(z / detailScale, x / detailScale) * (heightScale)) + heightOffset;
                    
                    Vector3 pos = new Vector3((x ), y, (z ));
    }

    }
    bbsuuo 学徒 2017-01-10 00:47 3楼
    目前的解决方法是 在柏林噪音加一个玩家永远去不了的大值seed,这样可以保证地图在某种程度上永远不会堆成
    返回顶部