Unity Physics.OverlapBox只是不起作用

时间:2017-06-01 15:56:48

标签: c# unity3d collision-detection unity5 game-physics

所以每当我使用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);
}

我的场景设置:

  1. 一个简单的立方体放置在位置(0,0,0),刻度为(1,1,1)
  2. 我附加此脚本的空对象
  3. 正如你所看到的,我的OverlapBox边界比我的立方体大得多,所以它应该找到我的立方体,对吧?好吧,不。我从控制台获得的输出是0。

    还有一件事:如果我在所有轴上将该立方体的比例设置为高于40的值,则脚本最终会检测到我的立方体并输出1。

    如何让这个工作正常,以便脚本找到我的多维数据集的默认比例?

2 个答案:

答案 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);