Witam wszystkich :) Oto sytuacja:Szkieletowe Collider2D nieuznanych za Raycast Collider
mam baddy prefabrykatów, który ma dwa komponenty Collider: prosta CapsuleCollider2D wykorzystywane do fizyki, a spust PolygonCollider2D wykorzystywane wyłącznie do kolizji Najedź myszką .
PolygonCollider2D jest aktualizowana za pośrednictwem dołączonego skryptu (Baddy.cs) tylko w razie potrzeby za pomocą:
if(this.gameObject.GetComponent<PolygonCollider2D>()!=null){
Destroy(this.gameObject.GetComponent<PolygonCollider2D>());
}
this.gameObject.AddComponent<PolygonCollider2D>();
this.gameObject.GetComponent<PolygonCollider2D>().isTrigger=true;
Tak, to jest biedny praktyka, ale dostać to zadanie. Działa to doskonale: w widoku sceny gry mogę zatrzymać się i zobaczyć, że rzeczywiście istnieje zderzacz wielokątów na naszym uszkodzonym prefabrykacie.
W innym dołączonym skryptu (CollisionHandler.cs) sprawdzamy prasie myszki na naszej baddy:
if(MousePress()){
hit=Physics2D.Raycast(level.mousePoint, Vector2.zero, 0f);
if(hit&&hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()){
print("baddy mousePress");
}
}
Jednak hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()
okazuje się fałszywy, chociaż mogłem drukować zarówno hit.collider
i this.gameObject.GetComponent<PolygonCollider2D>()
bezpośrednio przed ręką w naszych if(MousePress())
i mieć je obie zdefiniowane jako:
D_Prefab(Clone) (UnityEngine.PolygonCollider2D)
nie mogły być różne PolygonColliders bo tam może być tylko jeden na raz, ponieważ naszym baddy skryptu eliminować es i tworzy jednocześnie wielokątnik.
jakieś pomysły co może być nie tak?