如何将动态生成的地形段组合在一起Unity

时间:2016-03-16 17:00:07

标签: unity3d game-engine blender dynamically-generated

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

1 个答案:

答案 0 :(得分:0)

这取决于您希望地形看起来像什么。如果你想在外部创建地形碎片,比如Blender,那么是的,所有这些碎片必须无缝地组合在一起。但这需要做很多工作,因为你必须创造很多适合景观的作品才能保持有趣。

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

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

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

我确信网上有很多关于程序性景观生成的噪声函数的教程。 Amit Patel的教程是良好的视觉和交互式解释,here is one of his tutorials about noise-based landscapes。看看他的其他精彩教程。关于动态网格生成也会有很多教程,只需要进行谷歌搜索 - 快速浏览一下,CatLikeCoding's Procedural Grid tutorial可能就是你所需要的。