2017-03-16 8 views
5

नमस्ते यहाँ :) स्थिति है:पूर्वनिर्मित Collider2D Raycast कोलाइडर के रूप में मान्यता नहीं

मैं एक 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; 

हाँ, यह गरीब अभ्यास है, लेकिन यह काम किया है मिलता है। यह पूरी तरह से काम करता है: खेल के दृश्य दृश्य में मैं रोक सकता हूं और देख सकता हूं कि वास्तव में हमारे बैडी प्रीफैब पर बहुभुज कोलाइडर है।

एक और संलग्न स्क्रिप्ट (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()) और उन दोनों के रूप में परिभाषित किया है: हमारे Baddy स्क्रिप्ट remov के बाद से, क्योंकि वहाँ एक बार में केवल एक हो सकता है अलग PolygonColliders

D_Prefab(Clone) (UnityEngine.PolygonCollider2D) 

वे नहीं किया जा सका es और polygonCollider एक साथ बनाता है।

कोई विचार क्या गलत हो सकता है?

उत्तर

2

एक परतमास्क के साथ भौतिकी 2 डी। रेकाकास्ट का उपयोग करके, मैंने रास्ते में आने वाले अन्य कोलाइडर के मुद्दे को हल किया, जिसमें बड्डी के अपने कैप्सूल कोलाइडर 2 डी शामिल थे। सौभाग्य से, मेरे बैडडी माउस टकराव की जांच करने से पहले जमा हो जाएंगे, इसलिए मैंने समय से पहले कोलाइडर को अद्यतन किया जब बैडी की एनिम गति 0 थी। स्पष्ट रूप से अपडेट फ़ंक्शन के माध्यम से कोलाइडर बनाने और निकालने से सिस्टम को संभालने के लिए पर्याप्त समय नहीं मिलता है टकराव।

http://answers.unity3d.com/questions/1326583/prefab-collider2d-not-recognized-as-raycast-collid.html#comment-1327337

संबंधित मुद्दे