मुझे एएबीबी टक्कर संकल्प के साथ एक समस्या है।
मैं एक्स अक्ष को पहले हल करके एएबीबी चौराहे को हल करता हूं, फिर वाई अक्ष को। यह इस बग को रोकने के लिए किया जाता है: http://i.stack.imgur.com/NLg4j.png
वर्तमान विधि ठीक काम करती है जब कोई वस्तु खिलाड़ी में जाती है और खिलाड़ी को क्षैतिज रूप से धकेलना पड़ता है। जैसा कि आप .gif में देख सकते हैं, क्षैतिज स्पाइक्स खिलाड़ी को सही ढंग से धकेलते हैं।
जब ऊर्ध्वाधर स्पाइक्स खिलाड़ी में चले जाते हैं, हालांकि, एक्स अक्ष अभी भी पहले हल हो गया है। यह "लिफ्ट के रूप में स्पाइक्स का उपयोग करना" असंभव बनाता है।
जब खिलाड़ी ऊर्ध्वाधर स्पाइक्स में जाता है (गुरुत्वाकर्षण से प्रभावित होता है, तो उनमें गिर जाता है), उसे वाई अक्ष पर धकेल दिया जाता है, क्योंकि एक्स अक्ष पर कोई ओवरलैप नहीं था जिसके साथ शुरू करना था।
कुछ मैंने कोशिश की इस लिंक के पहले उत्तर में वर्णित विधि थी: 2 डी आयताकार वस्तु टकराव का पता लगाने
हालाँकि स्पाइक्स और मूविंग ऑब्जेक्ट्स अपनी स्थिति में परिवर्तन करके चलते हैं, वेग से नहीं, और मैं उनकी अगली अनुमानित स्थिति की गणना तब तक नहीं करता जब तक कि उनके अपडेट () विधि को नहीं कहा जाता। कहने की जरूरत नहीं है कि यह समाधान भी काम नहीं किया। :(
मुझे एएबीबी की टक्कर को इस तरह से हल करने की आवश्यकता है कि दोनों मामले ऊपर वर्णित कार्य के अनुसार।
यह मेरा वर्तमान टक्कर स्रोत कोड है: http://pastebin.com/MiCi3nA1
मैं वास्तव में आभारी रहूंगा यदि कोई इस पर गौर कर सकता है, क्योंकि यह बग शुरू से ही इंजन में सभी तरह से मौजूद है, और मैं बिना किसी सफलता के, एक अच्छा समाधान खोजने के लिए संघर्ष कर रहा हूं। यह मुझे गंभीरता से टकराव कोड को देखने में रात बिताने और मुझे "मज़ेदार हिस्सा" होने से रोक रहा है और गेम लॉजिक को कोडिंग कर रहा है :(
मैंने XNA AppHub के प्लेटफ़ॉर्मर डेमो (सामान की अधिकांश कॉपी-पेस्ट करके) के समान टकराव प्रणाली को लागू करने का प्रयास किया। हालाँकि "जंपिंग" बग मेरे खेल में होता है, जबकि यह AppHub डेमो में नहीं होता है। [जंपिंग बग: http://i.stack.imgur.com/NLg4j.png ]
कूदने के लिए मैं जाँचता हूँ कि क्या खिलाड़ी "ऑनग्राउंड" है, तो वेलोसिटी में -5 जोड़ें।
चूंकि खिलाड़ी का वेलोसिटी.एक्स वेलोसिटी से अधिक है। वे (आरेख में चौथे पैनल को देखें), ऑनगैंग सही पर सेट है जब यह नहीं होना चाहिए, और इस तरह खिलाड़ी को मध्य-हवा में कूदने की अनुमति मिलती है।
मेरा मानना है कि AppHub डेमो में ऐसा नहीं होता है क्योंकि खिलाड़ी का वेलोसिटी। X वेलोसिटी से अधिक कभी नहीं होगा। हां, लेकिन मुझसे गलती हो सकती है।
मैंने इसे पहले एक्स अक्ष पर हल करने से पहले हल किया, फिर वाई अक्ष पर। लेकिन जैसा कि मैंने ऊपर कहा कि स्पाइक्स के साथ टकराव को कम कर देता है।