【发布时间】:2017-07-07 13:59:07
【问题描述】:
我正在 Unity 中创建一个 2D 块堆叠游戏,您可以在其中从 x 轴平移生成器对象实例化块。我面临的问题是当堆栈变得太高并且靠近产卵器时,我需要在 Y 轴上向上移动产卵器和游戏摄像机。我正在测量一堆预制件以使用 Bounds 获得它们的高度所以我知道何时移动我的相机和生成器。我面临的问题是当我调用我的 GetMaxBounds 函数并封装它没有添加到我的 parentBounds 变量的附加点时。我的 parentBounds.max.y 永远不会增加。我是编程和 C# 的新手。提前致谢。
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;
}
【问题讨论】:
-
只需添加堆栈中各个对象的高度即可。
-
谢谢。问题是它们并不总是均匀堆叠。有时会跌落、旋转并以不同的高度结束。
-
您是否在检查积木是否堆放在塔上?如果是这样,您可以遍历每个成功堆叠的对象并乘以单个块的高度。
-
我是,但它们并不总是以相同的方式堆叠。目前正在尝试确定是否可以使用下面的 Bounds 建议获得包含所有子块对象的父堆栈对象的高度。
标签: c# unity3d game-physics unity2d