बटन दबाए रखने पर दीवार के विरुद्ध घबराना


17

तो, मैं एक शीर्ष नीचे आरपीजी बना रहा हूँ।

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

धन्यवाद!

PS: मैं खिलाड़ी को स्थानांतरित करने के लिए transform.translate का उपयोग कर रहा हूं, और मैं C # का उपयोग कर रहा हूं।

संपादित करें : मैं दोनों पर एक 2 डी रिगिडबॉडी और 2 डीबॉक्स कोलाइडर का भी उपयोग कर रहा हूं।


अनुवाद करने से पहले आपको बस एक स्वीप टेस्ट की आवश्यकता होती है
मिकेल


ओह। उह ... मुझे यकीन नहीं है कि इसे एकता सी # में कैसे जोड़ा जाए। मैं C # से थोड़ा नया हूं। यदि आपके पास ज्ञान है, तो क्या आप इसे लागू करने का तरीका बताएंगे?
१२:४२ पर जिनेवा

जवाबों:


51

घबराहट इसलिए हो रही है क्योंकि आप ट्रांसफॉर्मर का उपयोग करके दीवार में खिलाड़ी को वार कर रहे हैं। ट्रांसलेक्ट करें, और भौतिकी कदम कह रहा है, "अरे, हम दीवार में हैं। चलो इस टकराव के मुद्दे को हल करें और खिलाड़ी को दीवार से पीछे धकेलें। । "

इससे बचने के लिए, जब एक Rigidbody2D का उपयोग कर, इसका इस्तेमाल करने की सलाह दी जाती है Rigidbody2D.MovePosition । यह सुनिश्चित करता है कि जब आप हिल रहे हों, तो आपके पास ओवरलैपिंग कोलाइडर नहीं होंगे। यदि एक कोलाइडर और कठोरता से स्थानांतरित नहीं किया जा सकता है क्योंकि रास्ते में कुछ है, तो यह घबराना नहीं होगा।

Rigidbody2D.MovePosition का उपयोग करके, आप आंदोलन को सुचारू रखने के लिए Rigidbody2D.interpolation मान सेट करना चाह सकते हैं ।

हालाँकि, अगर Rigidbody2D.MovePosition किसी कारण से आपके गेम के लिए आदर्श नहीं है और आप अभी भी Transform.Translate का उपयोग करना चाहते हैं, तो Physics2D.Raycast (या अन्य Physics2D कास्ट) का उपयोग करके देखें कि क्या चलती है, जिससे आप दीवार से टकराएंगे या नहीं, और केवल तभी आगे बढ़ें जब कोई दीवार न टकराए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.