Xin chào tất cả mọi người :) Dưới đây là tình hình:Prefab Collider2D không công nhận là Raycast Collider
Tôi có một prefab baddy trong đó có hai thành phần gia tốc: a CapsuleCollider2D đơn giản sử dụng cho vật lý, và kích hoạt chỉ PolygonCollider2D sử dụng cho va chạm điểm chuột .
Các PolygonCollider2D được cập nhật thông qua một kịch bản đính kèm (Baddy.cs) chỉ khi cần thiết sử dụng:
if(this.gameObject.GetComponent<PolygonCollider2D>()!=null){
Destroy(this.gameObject.GetComponent<PolygonCollider2D>());
}
this.gameObject.AddComponent<PolygonCollider2D>();
this.gameObject.GetComponent<PolygonCollider2D>().isTrigger=true;
Có, đây là thực hành kém, nhưng nó có được của công việc làm. Nó hoạt động hoàn hảo: trong khung cảnh của trò chơi tôi có thể tạm dừng và thấy rằng có thực sự là một máy va chạm đa giác trên prefab baddy của chúng tôi.
Trong một kịch bản đính kèm (CollisionHandler.cs) chúng tôi kiểm tra cho một nền báo chí chuột trên baddy của chúng tôi:
if(MousePress()){
hit=Physics2D.Raycast(level.mousePoint, Vector2.zero, 0f);
if(hit&&hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()){
print("baddy mousePress");
}
}
Tuy nhiên hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()
hóa ra sai sự thật, mặc dù tôi có thể in cả hit.collider
và this.gameObject.GetComponent<PolygonCollider2D>()
ngay trước tay trong của chúng tôi if(MousePress())
và đã cả hai định nghĩa là:
D_Prefab(Clone) (UnityEngine.PolygonCollider2D)
họ không thể PolygonColliders khác nhau bởi vì chỉ có thể có cùng một lúc, vì kịch bản remov Baddy của chúng tôi es và tạo đồng thời PolygonCollider.
Bất kỳ ý tưởng nào có thể xảy ra sai?