C# Unity Physics.Overlapper Box只是不';行不通
所以有一个问题,每当我使用Physics.Overlapper框检查该区域中存在多少对象时,它总是输出0 这是我的精简代码:C# Unity Physics.Overlapper Box只是不';行不通,c#,unity3d,collision-detection,unity5,game-physics,C#,Unity3d,Collision Detection,Unity5,Game Physics,所以有一个问题,每当我使用Physics.Overlapper框检查该区域中存在多少对象时,它总是输出0 这是我的精简代码: void Update () { a(); } void a() { Collider[] c = Physics.OverlapBox(new Vector3(10, 10,10), new Vector3(-10, -10, -10)); Debug.Log(c.Length); } 我的场景设置: 放置在(0,0,0)位置的简单立方体,比例为(1,1,1) 附加
void Update () {
a();
}
void a()
{
Collider[] c = Physics.OverlapBox(new Vector3(10, 10,10), new Vector3(-10, -10, -10));
Debug.Log(c.Length);
}
我的场景设置:
FixedUpdate
函数中处理,而不是在Update
one中处理。根据,您将重叠框的大小设置为-20,-20,-20,这不太符合逻辑。这可以解释为什么你必须将立方体的比例设置为大于40,40,40
另外,物理相关的操作应该在
FixedUpdate
函数中处理,而不是在Update
one中处理。我正在使用TransformVector计算我的盒子的大小:
Vector3 size = itemTransform.TransformVector(itemCollider.size / 2);
Collider[] results = Physics.OverlapBox(itemTransform.position, size);
结果并不一致。我意识到TransformVector返回的大小为负值,因此我只需对该向量进行算术运算
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);
我也有同样的问题。我正在使用TransformVector计算我的盒子的大小:
Vector3 size = itemTransform.TransformVector(itemCollider.size / 2);
Collider[] results = Physics.OverlapBox(itemTransform.position, size);
结果并不一致。我意识到TransformVector返回的大小为负值,因此我只需对该向量进行算术运算
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);