我怎样才能使动态生成的地形段适合 Unity

How can I make dynamically generated terrain segments fit together Unity

我正在使用动态生成的地形创建我的游戏。这是非常简单的想法。地形总是分为三个部分:玩家所在的部分和玩家旁边的两个部分。当玩家移动(总是向前)到下一个片段时,会生成新的片段,最后一个片段会被切断。它适用于平面,但我不知道如何处理更复杂的地形。我是否应该让它从两边都具有相同的边缘(为了创建我正在使用搅拌机的资产)?或者还有其他选择吗?请注意,我开始使用 unity 制作游戏。

这取决于您希望您的地形看起来像什么。如果你想在外部的东西中创建地形块,比如 Blender,那么是的,所有这些块都必须无缝地组合在一起。但这需要大量工作,因为您必须创建很多可以组合在一起的作品,以使景观保持有趣。

我建议您宁愿在 Unity 中动态生成地形。您可以使用代码创建自己的网格。您首先创建一个对象(在代码中),然后生成顶点和三角形数组以分配给该对象,使其具有可见且合理的网格。您首先在特定位置创建顶点,然后添加一次包含 3 个顶点的三角形。如果你想要平滑的外观而不是低多边形外观,你将为下一个三角形重复使用一些顶点,这有点棘手。

创建块的网格后,您可以开始更改代码以指定如何更改顶点的高度,从而提供有趣的地形。只要新块上的第一个顶点与当前块上的最后一个顶点(假设它们具有相同的 x 和 z 位置)处于相同的高度(比如 y 位置),它们就会排成一行。也就是说,您可以通过不使用单独的块,而是通过更新对象网格以添加新的顶点和三角形来使其更简单,这样您创建的地形只是一个变化的部分,而不是具有单独的块。

有很多方法可以创建有趣的地形。 Perlin Noise 是生成半随机和有趣地形的最常用函数之一。另一个是他最近的 Simplex 噪音。像大多数随机生成器函数一样,它有一个种子值,您可以跟踪它,以便您可以创建有趣的地形并让您的块边缘对齐,如果您仍然想使用单独的块而不是动态扩展的单个网格.

我相信网上有很多关于程序景观生成的噪声函数的教程。 Amit Patel 的教程是很好的视觉和交互式解释,here is one of his tutorials about noise-based landscapes. Take a look at his other great tutorials as well. There will be many tutorials on dynamic mesh generation as well, just do a google search -- a quick look tells me that CatLikeCoding's Procedural Grid tutorial 可能就是您所需要的。