大家好:)這裏的情況:預製Collider2D不承認光線投射撞機
我有一個baddy預製有兩個對撞機部件:用於物理簡單CapsuleCollider2D,並觸發PolygonCollider2D僅用於鼠標點碰撞。
的PolygonCollider2D通過一個附加的腳本(Baddy.cs)使用僅在需要時更新:
if(this.gameObject.GetComponent<PolygonCollider2D>()!=null){
Destroy(this.gameObject.GetComponent<PolygonCollider2D>());
}
this.gameObject.AddComponent<PolygonCollider2D>();
this.gameObject.GetComponent<PolygonCollider2D>().isTrigger=true;
是的,這是不良的做法,但它得到是工作完成的。它非常完美:在遊戲的場景視圖中,我可以暫停並看到我們的baddy預製件上確實存在多邊形對撞機。
在另一個附加的腳本(CollisionHandler.cs),我們檢查我們的baddy鼠標按:
if(MousePress()){
hit=Physics2D.Raycast(level.mousePoint, Vector2.zero, 0f);
if(hit&&hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()){
print("baddy mousePress");
}
}
然而hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()
原來假的,即使我可以立即在手之前打印既hit.collider
和this.gameObject.GetComponent<PolygonCollider2D>()
我們if(MousePress())
並將它們都定義爲:
D_Prefab(Clone) (UnityEngine.PolygonCollider2D)
他們不可能是不同PolygonColliders,因爲只能有一次一個,因爲我們的Baddy腳本祛瘀es並同時創建PolygonCollider。
任何想法可能會出錯?