Woj*_*cel 1 c# unity-game-engine
我最近创建了简单的关卡生成器,它创建了一个带有分段的关卡。我曾经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";
}
Run Code Online (Sandbox Code Playgroud)
您的具体问题是,边界框在世界空间中形成一个方框......也就是说“轴对齐”。
AABB 代表轴对齐边界框。
它不是您在该词的传统英语含义中所想到的“边界”。
正如你所说,如果你有一个旋转的物体,它会给你世界空间中容纳该物体的最大的“扁平”盒子。
这是 3D 工程的基础知识。
这些图显示了一些二维“AABB”“轴对齐”边界框。这同样适用于 3D。
(一旦你以高级方式处理这个问题,也要小心,因为网格物体的边界是Unity 本地空间中令人困惑的 AABB 边界,即在父级空间中 - 对场景空间使用 renderer.bounds - 不要担心这一点,直到你开始吧 :) 你可以在 Unity 中使用不同的“边界”,所有这些都令人困惑。)
顺便说一句,如果您刚刚开始,有一种 KISS 方法可以解决这个问题:简单地,旋转对象直到它变成正方形,即不旋转。然后进行测量!然后将其旋转到您需要的位置。
| 归档时间: |
|
| 查看次数: |
11990 次 |
| 最近记录: |