Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity Physics.Overlapper Box只是不';行不通_C#_Unity3d_Collision Detection_Unity5_Game Physics - Fatal编程技术网

C# Unity Physics.Overlapper Box只是不';行不通

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) 附加

所以有一个问题,每当我使用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)
  • 附加此脚本的空对象
  • 正如你所看到的,我的重叠框边界比我的立方体大很多,所以它应该找到我的立方体,对吗?不,我从控制台得到的输出是0

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

    如何使其工作,以便脚本找到具有默认比例的多维数据集?

    根据,您将重叠框的大小设置为-20,-20,-20,这不太符合逻辑。这可以解释为什么你必须将立方体的比例设置为大于40,40,40

    此外,物理相关操作应在
    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);