如何在Unity中使用mesh.bounds?

时间:2016-03-24 13:51:18

标签: c# unity3d

我最近创建了简单的关卡生成器,它创建了一个带有细分的关卡。我使用mesh.bounds.x来查看应该放置下一个段的前一个段的距离。它很适合我,因为所有细分都是方形的。现在我决定用更大的部分与另一边的比例(仍然是非常矩形)来完成这项工作。我的问题是,即使我尝试了很多组合,我也无法正确设置。

有人可以向我解释这mesh.bound是如何运作的吗?我也实例化旋转的段,也许这会导致一些错误?我的所有预制件都是从搅拌机中导入的。

我的部分代码中我实例化了一个段(在我决定使用更复杂的段之前):

size = meshh.bounds.size;

if ((x == 0) && (y == 0))
{
     segments[x, y] = Instantiate(prefabs[0], new Vector3(segments[1, 1].transform.position.x - size.x, segments[1, 1].transform.position.y, segments[1, 1].transform.position.z + size.x), segments[1, 1].transform.rotation) as GameObject;

     segments[x, y].tag = "Terrain";
}

2 个答案:

答案 0 :(得分:2)

Bounds描述您的网格所适合的最小框.Box位于 world 空间中。基本上就像3ds Max中的这些白色角落一样:

3dsMax selection box

Mesh.bounds on Unity Docs

答案 1 :(得分:2)

您的具体问题是边界框会在世界空间中生成正方形框...也就是说"轴对齐"。

AABB代表 AXIS ALIGNED 边界框。

"界限"你会想到"界限"在该词的传统英语含义中。

正如你所说,如果你有一个旋转的物体,它会给你最大的"平坦的"在世界空间中装有东西的盒子。

这是3D工程的基础。

enter image description here

图表显示了一些" AABB" "轴取向" 2D中的边界框。同样适用于3D。

(一旦你以高级方式处理这个问题,也要小心,因为网格界限令人困惑地AABB在Unity局部空间中绑定 即父母的空间 - 使用渲染器。渲染场景空间 - 不要担心这一点,直到你进入它:)有不同的"边界"你可以在Unity中使用,所有这些都令人困惑。)

顺便说一下 - 如果你刚刚开始,可以采用一种KISS方式来解决这个问题:简单地说,旋转物体直到它是正方形,即没有旋转。 然后进行测量!然后将其旋转到您需要的位置。