द्वारा नियंत्रित रैकेट के साथ तेज गति से चलने वाली गेंद की टक्कर का पता लगाने में समस्या, एकता में, मेरे पास एक रैकेट है जो गेंद को मारने वाला होता है, और रैकेट सीधे माउस द्वारा नियंत्रित होता है, यानी बल्ले को स्थानांतरित किया जा रहा है माउस अक्षों का उपयोग कर माउस और रैकेट को स्थानांतरित करने के लिए transform.translate() फ़ंक्शन का उपयोग कर।माउस
मुझे उम्मीद थी कि यूनिटी 3 डी के भौतिकी सीधे माउस द्वारा रैकेट के आंदोलन का सही ढंग से अनुवाद नहीं करेंगे और तदनुसार गेंद को प्रभावित करेंगे, और मुझे कुछ कस्टम लिखना होगा, और यह सच साबित हुआ।
लेकिन जब रैकेट चल रहा है तो गेंद की टकराव ठीक से नहीं मिल रही है। जब भी यह है, सब ठीक है, और गेंद मुझे पसंद है व्यवहार करता है।
अब मैं एक कस्टम भौतिकी स्क्रिप्ट लिख रहा हूं (मैं स्क्रिप्टिंग के लिए सी # का उपयोग करता हूं) जिसमें मैंने गेंद को लंबाई 0.6 एफ के 4 रेएक्स संलग्न किए हैं, और कुछ जटिल वेक्टर गणना करने के बाद, गेंद की वेग की गणना करें रैकेट को मारने के बाद, और सीधे rigidbody.velocity = गणना velocity() का उपयोग कर गेंद की वेग पर लागू करें। रैकेट चलने पर यह फिर से ठीक काम कर रहा है, लेकिन जब मैं रैकेट को स्थानांतरित नहीं करता हूं। सटीक (लक्षण) के लक्षण हैं:
अंतर्निहित भौतिकी और टकराव का पता लगाने का उपयोग करना: जब रैकेट चल रहा है, तो गेंद कभी-कभी सीधे रैकेट के माध्यम से गुजरती है, और कभी-कभी, यह धीमा हो जाती है (अविश्वसनीय स्तर तक)।
वेग की गणना करने के लिए मेरी स्क्रिप्ट का उपयोग करना: समस्या एक जैसी है, लेकिन यह मुझे पहचानने देता है कि जब मैं कोलाइडर (रैकेट) के सामान्य मुद्रित करता हूं तो क्या गलत है। यह कभी-कभी सही सामान्य देता है, और कभी-कभी सामान्य वेक्टर का नकारात्मक देता है, जिसका मतलब है कि यह सीधे शीर्ष सतह के माध्यम से जा रहा है और कोलाइडर (रैकेट) के निचले हिस्से के साथ हिट का पता लगा रहा है।
बातें मैं कोशिश की है:
(यह रैकेट पर व्यापक बॉक्स कोलाइडर के साथ काम करता है, लेकिन फिर स्पष्ट रूप से गेंद दूर रैकेट से काफी दूर से ले जाता है कोलाइडर का आकार बढ़ाने से, और मेरी अपनी स्क्रिप्ट यहां काम करती है, रैकेट को स्थानांतरित होने पर डिफ़ॉल्ट भौतिकी अजीब परिणाम देती है), संक्षेप में मुझे वह वास्तविकता नहीं मिलती जो मैं चाहता हूं।
0.001 पर निश्चित टाइमस्टैम्प को कम करना, जो चीजों में काफी सुधार हुआ है, लेकिन अभी भी परिणाम से बहुत दूर है, और गेंद बार-बार गेंद के गलत पक्ष को चुन रही है।
निरंतर गतिशीलता के लिए टकराव का पता लगाना। जिसने चीजों को बेहतर नहीं किया।
और गलत साइड के अलावा टक्कर में उठाया, एक और समस्या मैं देखा है कि रैकेट बंद बाउंस होने के बाद, गेंद चाल है, लेकिन रैकेट तेजी से, यह बजाय एक पूरा चाप में हिलाने की ले जाया जाता है या रेखा, किसी भी तरह गेंद के सामने दिखाई देती है, जिसके परिणामस्वरूप दो हिट होती हैं। यह एक अनुमान है जो दिखाई देता है।
यह भी स्पष्ट है कि रैकेट के "आंदोलन" पहलू को यूनिटी 3 डी के भौतिकी में निर्मित नहीं किया जा रहा है, जिसके परिणामस्वरूप माउस का उपयोग करके रैकेट चल रहा है जब अजीब व्यवहार होता है।
मैं अटक गया हूं, मुझे नहीं पता कि यहां से कहाँ जाना है। कृपया मुझे बताएं कि मैं क्या कर रहा हूं।
मैंने रैकेट और गेंद दोनों के लिए अधिकतम गति निर्धारित करने का प्रयास किया है, मैं शायद पूरे वातावरण के आकार को बढ़ा सकता हूं, शायद यह कोलाइडर के दाहिने तरफ का पता लगाने का बेहतर मौका दे सकता है। मैं जस्टिन 808 द्वारा दिए गए समाधान को लागू करूँगा और सबकुछ का आकार बढ़ा दूंगा। – SpeedBirdNine
यह बात इतनी शानदार ढंग से काम करती है, मैंने सब कुछ के आकार को दोगुना कर दिया, और अब यह टक्कर लापता नहीं है। मुझे अभी भी दूसरी समस्या है जो जस्टिन 808 ने बात की थी, कि एक पल में रैकेट गेंद के सामने है और अगली फ्रेम गेंद के पीछे है, लेकिन कम से कम मैं दो अलग टकराव देख रहा हूं, जिसे कोड के साथ संभाला जा सकता है! आपका बहुत बहुत धन्यवाद! मुझे ऐसा करने में केवल 2 मिनट लग गए। अब मैं दो टकरावों को हल करने के लिए जस्टिन के समाधान को लागू करने जा रहा हूं। इस समय तक अगर किसी के पास अन्य स्पष्टीकरण है, तो कृपया इसे साझा करें! – SpeedBirdNine
ठीक समस्या हल हो गई, मुझे गेंद की पिछली और अगली स्थिति के बीच एक रेएकास्ट नहीं रखना पड़ा क्योंकि अब रैकेट के कोलाइडर को गेंद गुम नहीं है। दूसरी बात यह है कि माउस के माध्यम से रैकेट आंदोलन गेंद पर लागू अतिरिक्त बल में अनुवाद नहीं करता है। मुझे खुद को यह हिस्सा लिखना पड़ा, और रैकेट कोलाइडर के लिए सत्य के रूप में सेट करना है ताकि मूल भौतिकी हस्तक्षेप न करे। लेकिन अब कई बार मारने की समस्या थी, मैंने इसे ध्वज का उपयोग करके हल किया, जो पहली बार हिट होने पर झूठ हो जाता है, और 1 सेकंड के बाद फिर से सच होता है, या जब गेंद किसी अन्य वस्तु को हिट करती है। यह काम! – SpeedBirdNine