如何使我的世界地图更大

GenerateHeight 用于通过噪声随机生成每个块的高度。这种随机生成方法比其他方法更接近我们想要的结果。普通随机数得到的值是离散且均匀分布的结果,而simlexnoise得到的结果将是连续的。这将达到更加真实、接近自然的效果。

在这一步中,我们构建立方体一侧的网格数据、顶点、UV 和索引。这一步完成后,如果我们把这个组件挂在我们原来创建的Cube上并运行它,我们就会得到一个随机生成的Chunk。

我的世界地图怎么做大(如何制作地图)

很多人一直好奇《我的世界》中的大地图是如何随机生成并且具有无限大小的。所以在本教程中,我将使用最简单的代码(大约300行)来在Unity引擎中实现这个机制。

如果我们要生成World,那么我们需要在这些层中逐层处理生成的逻辑,在World中动态加载Chunk,在Chunk中生成Block,在Block中生成Face。

如何制作地图

该函数用于给出一个世界空间位置,并获取指*置所在的Chunk对象。遍历chunks列表,找到对应的chunk并返回。我们将在下面的代码中使用这个函数。

该函数使用我们刚刚实现的静态函数Chunk.GetChunk来获取相应位置的chunk。如果没有获取到,则通过chunkPrefab在对应位置生成一个新的chunk。该函数将以这种方式动态加载自身周围的块。 viewRange参数可以控制需要加载的范围。

在GenerateBlockType中,会根据指*置随机生成的高度来判断当前Block的类型。最内层是岩石,中间夹杂着泥土,表面是草丛。

在这一步中我们从Update函数中看到了一些线索。这里,每帧首先处理玩家的输入,然后根据处理结果(更新的玩家位置)动态加载Chunk。

地图合成方法

GenerateHeight 将多种噪声的生成结果叠加,以混合出理想的结果。您可以*搜索与噪音相关的信息。

首先我们实现Chunk的生成,其中会包括Block的生成。这里将使用 Simplexnoise(Perlin 噪声的改进)

当我们的角色在地形上时,他只能看到最外层。事实上,他看不到内部的块,因此没有必要在这些看不见的块上浪费计算资源。正是因为这个原因,我们不能直接使用立方体来生成随机物体,而必须像现在一样使用面作为基本单位来生成它们。实现这个功能的函数是CheckNeedBuildFace。

None;}//当当前方块位置等于随机生成的高度值时,当前方块类型为草 elseif(wPos.y==genHeight){

标签: 我的世界