所以每当我使用Physics.OverlapBox来检查该区域中有多少个对象时它总会输出0就会出现问题。
这是我的精简代码:
void Update () {
a();
}
void a()
{
Collider[] c = Physics.OverlapBox(new Vector3(10, 10,10), new Vector3(-10, -10, -10));
Debug.Log(c.Length);
}
我的场景设置:
正如你所看到的,我的OverlapBox边界比我的立方体大得多,所以它应该找到我的立方体,对吧?好吧,不。我从控制台获得的输出是0。
还有一件事:如果我在所有轴上将该立方体的比例设置为高于40的值,则脚本最终会检测到我的立方体并输出1。
如何让这个工作正常,以便脚本找到我的多维数据集的默认比例?
答案 0 :(得分:1)
根据 documentation ,您将重叠框的大小设置为-20,-20,-20,这不是很逻辑。它可以解释为什么你必须将你的立方体的比例设置为大于40,40,40的东西。
此外,应在FixedUpdate
函数而不是Update
函数中处理与物理相关的操作
答案 1 :(得分:1)
我有同样的问题。我使用TransformVector来计算我的盒子的大小:
Vector3 size = itemTransform.TransformVector(itemCollider.size / 2);
Collider[] results = Physics.OverlapBox(itemTransform.position, size);
结果并不一致。我意识到TransformVector返回了大小的负值,所以我只需要Mathf.Abs向量:
Vector3 size = itemTransform.TransformVector(itemCollider.size / 2);
size.x = Mathf.Abs(size.x);
size.y = Mathf.Abs(size.y);
size.z = Mathf.Abs(size.z);
Collider[] results = Physics.OverlapBox(itemTransform.position, size);