मैं एक platformer चरित्र के लिए टक्कर की जाँच कर रहा हूँ जैसा कि # 1 में दिखाया गया है। लाल डॉट्स ऐसे पिक्सेल होते हैं जिनकी जाँच की जाती है और ग्रे लाइन उन अक्षों को इंगित करती है जिनसे वे संबंधित होते हैं। मुझे इस तरह से टकराव की जाँच से मिलने वाले परिणाम पसंद हैं (बनाम, कहते हैं, बाउंडिंग बॉक्स)। सब कुछ ठीक वैसे ही काम करता है जैसे मैं एक समस्या को छोड़कर इसे पसंद करता हूं: क्रश डिटेक्शन।
निम्नलिखित छवियों में, हल्का नीला बॉक्स जमीन का प्रतिनिधित्व करता है, नारंगी बॉक्स एक वस्तु है, और तीर आंदोलन की दिशा का संकेत देते हैं।
जब खिलाड़ी को कुचल दिया जाता है, तो यह पता लगाने का सरल उपाय है कि क्या विपरीत पक्षों पर टकराव के बिंदु दोनों ट्रिगर होते हैं। यदि वे हैं, तो खिलाड़ी को कुचल दिया जा रहा है। # 2 में, आप एक सामान्य क्रश परिदृश्य देख सकते हैं। खिलाड़ी मैदान में है और शीर्ष टकराव के बिंदु गिरने वाली वस्तु के साथ प्रतिच्छेद कर रहे हैं। यह एक क्रश चलाता है।
# 3, 4, और 5 वर्तमान समस्याग्रस्त परिदृश्य। # 3 में, खिलाड़ी ऑब्जेक्ट की ओर बढ़ रहा है, जो ऊपर जा रहा है। राइट-साइड टक्कर बिंदु ऑब्जेक्ट को मार रहा है, जिससे टकराव होता है और खिलाड़ी को रोकता है।
अब, यदि ऑब्जेक्ट आगे बढ़ना जारी रखता है और खिलाड़ी सही चलता रहता है (जैसा कि # 4 में दिखाया गया है), ऑब्जेक्ट खिलाड़ियों को राइट-साइड टकराव बिंदु को साफ करता है और खिलाड़ी दाईं ओर ले जाता है। लेकिन अब, ऐसा करने से, वस्तु एक शीर्ष टक्कर बिंदु को काट रही है, जिससे अवांछित ऊर्ध्वाधर क्रश होता है।
एक समान परिदृश्य # 5 में दिखाया गया है। नीचे के टकराव बिंदुओं को साफ करने के लिए दो वस्तुएं काफी दूर हैं, जिससे खिलाड़ी गिर सकता है, लेकिन अभी तक कोई भी पक्ष टक्कर बिंदुओं को साफ करने की अनुमति नहीं देता है, जिससे अवांछित क्षैतिज क्रश होता है।
मैं एक समाधान पर अपना दिमाग रगड़ रहा हूं, लेकिन कुछ भी नहीं है जो मैंने विशेष रूप से अच्छी तरह से काम किया है, इसलिए मैं सोच रहा हूं कि अगर किसी को इन समस्याओं का समाधान करने के बारे में कोई विचार या अंतर्दृष्टि है।
कुछ भ्रम को दूर करने के लिए, लाल टकराव बिंदु स्प्राइट के भीतर होगा और ग्रे लाइनों का उपयोग केवल प्रत्येक टकराव बिंदु के लिए प्रासंगिक अक्ष को दर्शाने के लिए किया जाता था। उदाहरण के लिए, यदि चरित्र का स्प्राइट एक साधारण हरा वर्ग होता, तो टक्कर बिंदु कुछ इस तरह दिखाई देते: