2017-06-01 20 views
0

因此,有一個問題,每當我用Physics.OverlapBox檢查在該地區有多少對象存在,總是輸出0團結Physics.OverlapBox是行不通的

這裏是我的精簡代碼:

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. 一個空對象在哪裏附接這個SC規模RIPT

正如你看到的,我OverlapBox界比我的立方體大得多,所以應該找我的立方體,對不對?那麼,不。我從控制檯得到的輸出爲0

一件事:如果我設置立方體中的所有軸高於40的東西的規模,劇本終於檢測我的立方體和輸出1.

如何我是否能夠正常工作,以便腳本能夠使用默認比例查找我的多維數據集?

回答

1

根據documentation,您將重疊框的大小設置爲-20,-20,-20,這不太合邏輯。這可以解釋爲什麼你有你的多維數據集的規模設定爲東西比40大,40,40

此外,物理相關的操作應在FixedUpdate函數,而不是一個Update

0

我來處理有同樣的問題。我使用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);