[英]OverlapCircleAll is not picking up other objects
我試圖讓所有對象在當前對象的距離內。 maxShootDistance
設置為3,當一個屬於ShootAt
圖層的對象靠近/在圓圈中時,它永遠不會被拾取,我的調試輸出0
。 為什么不拿起另一個物體呢?
public class QuckShot : Gun {
void Start () {
StartCoroutine(shoot());
}
IEnumerator shoot(){
while(true){
Collider2D[] hitColliders = Physics2D.OverlapCircleAll(transform.position, maxShootDistance, LayerMask.NameToLayer("ShootAt"));
Debug.Log(hitColliders.Length); // This is always returning zero
/*
* Snipped other bits of code
*/
yield return new WaitForSeconds(shootSpeed);
}
}
}
以下是分配給應該拾取的對象的屬性:
為什么我的代碼沒有拿起對象?
這個電話:
LayerMask.NameToLayer("ShootAt")
NameToLayer返回一個圖層索引(即:7),但OverlapCircleAll需要一個按位層掩碼 (即:啟用第7位)。
在某些情況下,如果圖層索引碰巧與所需的圖層蒙版有一兩個共同點,那么這種事情似乎可行。 無論哪種方式,它都會得到不直觀和混合的結果。
您可以使用按位左移運算符構造圖層蒙版:
1 << LayerMask.NameToLayer("ShootAt");
(您可以使用按位OR添加其他圖層。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.