簡體   English   中英

OverlapCircleAll沒有拾取其他對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM