我在Unity中创建一个2D块堆叠游戏,您可以从x轴平移spawner对象实例化块。我面临的问题是当堆栈太高而靠近产卵器时,我需要在Y轴上移动产卵器和游戏摄像机。我正在测量一堆预制器,以便使用Bounds来获得它们的高度我知道何时移动我的相机和spawner。我面临的问题是当我打电话给我的GetMaxBounds函数并封装它不会添加到我的parentBounds变量的附加点。我的parentBounds.max.y永远不会增加。我是编程和C#的新手。提前致谢。Unity3D - 如何测量一堆物体的高度?
if (Input.GetMouseButtonDown(0)) {
Instantiate (fallingBrick, spawnPosObj.transform.position, Quaternion.identity, parentStack.transform);
var parentBounds = GetMaxBounds (parentStack);
Debug.Log (parentBounds.max.y);
}
}
Bounds GetMaxBounds(GameObject g) {
var b = new Bounds(g.transform.position, Vector3.zero);
foreach (Renderer r in g.GetComponentsInChildren<Renderer>()) {
b.Encapsulate(r.bounds);
}
return b;
}
只需在堆叠中添加单个物体的高度即可。 –
谢谢。问题是他们并不总是均匀堆叠。有时会跌倒,旋转并最终落在不同的高度。 – Lewie
你是否在做任何检查,如果块被堆放在塔上?如果是这样,你可以遍历每个成功堆积的物体并乘以单个块的高度。 –