जवाबों:
मेरा समाधान गेम मैप में प्रत्येक भौतिक इकाई को ट्री नोड के रूप में और मूल नोड के रूप में मैप के रूप में माना जाएगा । नोड्स में अन्य नोड्स हो सकते हैं। हर नोड मैप नोड के अंदर (प्रत्यक्ष या अप्रत्यक्ष रूप से) समाहित है।
उदाहरण के लिए, मान लीजिए कि आपका चरित्र एक मंच पर खड़ा है। प्लेटफ़ॉर्म के नोड में वर्ण का नोड होता है। इसलिए, जब भी प्लेटफ़ॉर्म चलता है, तो उसमें मौजूद नोड्स (इस मामले में चरित्र) भी हिल जाएंगे।
ऐसा होने के लिए, प्रत्येक नोड में मूल नोड के सापेक्ष (x, y) स्थिति होनी चाहिए । उदाहरण के लिए, आपका चरित्र प्लेटफ़ॉर्म के सापेक्ष (1,0) पर स्थित हो सकता है , जो स्वयं (10,10) पर स्थित हो सकता है गेम मैप के सापेक्ष । इस तरह, यदि प्लेटफ़ॉर्म चलता है, तो आपका चरित्र अंतर्निहित रूप से आगे बढ़ेगा।
इस पदानुक्रमित वृक्ष में, प्रत्येक नोड की स्थिति उसकी स्थिति के योग के बराबर होती है और साथ ही उसके प्रत्येक मूल नोड की स्थिति। मान लीजिए कि हम मानचित्र पर चरित्र की स्थिति प्राप्त करना चाहते हैं। हम गणना करते हैं:
(चरित्र की स्थिति) + (मूल नोड की स्थिति) + (रूट नोड स्थिति) = (1,0) + (10,10) + (0,0) = (11,0)
ठीक है, इसलिए इस समय आपका चरित्र मंच पर खड़ा है। कूदने के बारे में क्या? खैर, जिस पल वह कूदता है, आप उसे मंच से अलग कर देते हैं और उसे प्लेटफॉर्म वाले नोड से जोड़ देते हैं ; इस स्थिति में, नक्शा (रूट नोड)।
जब वह फिर से उतरता है, तो उसे जो भी उतरा नोड पर संलग्न करें।
मैं इसे एक छद्म भौतिकी समस्या के रूप में मानने का सुझाव दूंगा और इसे जमीनी घर्षण का उपयोग करके हल करूंगा।
आप पहले से ही जमीन पर चरित्र को धारण करने के लिए गुरुत्वाकर्षण का उपयोग कर रहे हैं, यह उन स्थितियों को संभालता है जहां प्लेटफॉर्म ऊपर और नीचे चलते हैं। बाएं और दाएं आंदोलन को संभालने के लिए, जमीन को चरित्र पर बहुत अधिक घर्षण करना चाहिए। आमतौर पर यह घर्षण स्तर 1.0 या 100% होगा।
यदि पात्र अभी भी खड़ा है, तो उनका वेग 0 है, और वे घर्षण के कारण मंच के वेग का 100% भाग प्राप्त करते हैं। कुछ इस तरह है:
character_velocity = friction * platform_velocity
इस दृष्टिकोण का लाभ यह है कि यह आसानी से खुद को अतिरिक्त प्लेटफ़ॉर्मिंग मैकेनिक्स के लिए उधार देता है, जैसे कि खड़ी ढलानों पर घर्षण को दूर करने में सक्षम होना, आपके चरित्र को स्लाइड करने की अनुमति देता है। यह आपको आसानी से बर्फ बनाने के लिए घर्षण को कम करने की अनुमति देता है जो चरित्र को स्लाइड करेगा।
कम लटकने वाली दीवारों जैसे मुद्दों से निपटना भी आसान है जो आपके खिलाड़ी को एक चलते हुए मंच से टकरा सकते हैं। यदि आप बस चरित्र को माता-पिता के मंच के बच्चे के रूप में मानते हैं, तो यह एक अच्छा मौका है कि यह आपके टकराव का पता लगाने के बाकी कार्यों के बिना बहुत आसानी से बातचीत नहीं करेगा।
आप खिलाड़ी के स्तर को "स्तर में पूर्ण" नहीं बल्कि "प्लेटफ़ॉर्म के सापेक्ष" ठीक कर सकते हैं, फिर एक फ़ंक्शन होता है जो उसकी वास्तविक स्थिति देता है। मुझे यह पसंद नहीं है।
खिलाड़ी को प्लेटफ़ॉर्म पर बाँधने के लिए शायद (और सरल) बेहतर होगा ताकि जब प्लेटफ़ॉर्म + x / + y चले, तो खिलाड़ी उतना ही आगे बढ़े।