Unity3D中的可变形地形?

图德瓦里

我想创建一个可变形的世界(也许也可以通过程序生成),但是我不知道如何通过脚本来实现。

以下是一些我有一些疑问的示例:

我的世界

从多维数据集创建程序生成的可变形世界很容易,但是我不知道如何使其最佳化。团结足够强大,可以处理很多多维数据集吗?

地标

在这个游戏中,您可以塑造世界,并且可以像地形一样使用Unity。它类似于《我的世界》,但不像立方体。(因此,当您在地面上进行挖掘时,就像在现实生活中一样进行挖掘。因此,您不会像在《我的世界》中那样逐个挖掘一个立方体)

是否可以调整Terrain运行时的形状?

预先感谢您的帮助!

Xander Luciano

从多维数据集轻松创建程序生成的可变形世界很容易

简短的回答,不,这并不容易。您将不得不使用某种类型的噪声来生成高度图(例如体素噪声,这是博客教程)。

[团结是否足够强大,足以处理很多立方体?

不,就其自身而言,统一性无法很好地处理Minecraft克隆所需的多维数据集。从统计上讲,您将永远无法看到一个多维数据集的所有6个面,因此渲染所有6个面是浪费的。而且,每个立方体都有自己的对撞机,该对撞机会很快变得混乱。另外,如果多维数据集被其他多维数据集阻止,则无需渲染该多维数据集。所有这一切都需要复杂的优化代码,以使其在您修改地形并在整个世界中移动时高效运行。

是否可以调整Terrain运行时的形状?

是的,这是我从这个问题中窃取的一些代码

function Start()
{
    terrain = GetComponent(Terrain);
    var nRows = 50;
    var nCols = 50;
    var heights = new float[nRows, nCols];
    for (var j = 0; j < nRows; j++)
        for (var i = 0; i < nCols; i++)
            heights[j,i] = Random.Range(0.0,1.0);
    terrain.terrainData.SetHeights (0,0,heights);
}

这是https://docs.unity3d.com/ScriptReference/TerrainData.SetHeights.html上的文档TerrainData.SetHeights()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章