我在一个父物体下有多个子物体,这些子物体上都有BoxCollider2D。
我需要知道盒子碰撞器的总高度和总宽度。在“Start()”期间,我循环遍历每个子组件,读取盒子碰撞器的大小,并将其添加到名为“totalSize”的Vector2属性中。
private Vector2 totalSize;
foreach (Transform child in transform)
{
var col = child.GetComponent<BoxCollider2D>();
if(col != null)
totalSize += new Vector2(col.bounds.size.x, col.bounds.size.y);
}
然而,这会计算所有对象,给我220 x 100,而不是像图片中的示例那样给我100 x 50。每个灰色框代表一个BoxCollider2D。
如何找到真实的区域高度和宽度,考虑到每个“盒子”可以具有不同的大小或不同的配置。
if (abc<xyz) xyz = abc;
类型行的方法是使用xyz = Mathf.Min(abc,xyz);
。 - RuzihmBoxCollider2D.Bounds
开始,也可以使用Bounds.Encapsulate(Bounds)
。https://docs.unity3d.com/ScriptReference/Bounds.Encapsulate.html - yes