首页 > 解决方案 > unity 3d ondular 地形生成

问题描述

我正在制作一个 3d 游戏,我必须在其中生成一些地形才能获得无限且随机的关卡。地形必须起伏不定,像这样:

https://imgur.com/a/prTuRl0

我使用 perlin 噪声来生成地形,队列中有多个平面,随着玩家前进而更新它们(我有最后一个平面的 Z 位置,所以当我从队列中窥视时更新时,队列中的第一个,出队它并通过 mathf.PerlinNoise(0, zPosition)) 用新的顶点再次将其排入队列,我在第一个参数中有一个 0 的原因是,这些平面在 x 轴上是均匀的

我希望有一个类似于沙丘的游戏玩法,但在 3d 中,玩家控制一个球,在接地时点击可以给它速度,在空中点击可以让它下降,他可以通过顺利通过下坡或获得得分和条纹如果他撞到上坡路就会死

问题:

https://imgur.com/a/sdZp1qQ

柏林噪音并不总是像我需要的那样上下波动,有时它在中间有那些曲线,使球跳跃并且有奇怪的不想要的运动......感谢关于这个主题的任何帮助。

标签: c#unity3dprocedural-generation

解决方案


我通过使用正态分布函数生成波浪来解决这个问题,通过弄乱参数,我可以为我的波浪添加宽度或高度每个“波浪”使用 5 个平面(每个波浪是 5 个平面的游戏对象数组),并且只需通过 x 轴上的顶点,将它们的所有高度更改为在函数中计算的相同值,递增 x 并再次执行


推荐阅读