प्लेटफ़ॉर्म गेम में मूविंग प्लेटफ़ॉर्म कैसे संभालते हैं?


15

मैं बॉक्स 2 डी या किसी भी चीज का उपयोग नहीं करना चाहता, मैं सिर्फ सरल मूविंग प्लेटफॉर्म (ऊपर-नीचे, बाएं-दाएं, विकर्ण और परिपत्र पथ) चाहता हूं। मेरा प्रश्न अद्यतन आदेश / नियंत्रण पदानुक्रम को संभालना है ताकि खिलाड़ी उछल या लड़खड़ाए बिना, ठोस रूप से मंच पर स्थिर रहे?

जवाबों:


16

मेरा समाधान गेम मैप में प्रत्येक भौतिक इकाई को ट्री नोड के रूप में और मूल नोड के रूप में मैप के रूप में माना जाएगा । नोड्स में अन्य नोड्स हो सकते हैं। हर नोड मैप नोड के अंदर (प्रत्यक्ष या अप्रत्यक्ष रूप से) समाहित है।

उदाहरण के लिए, मान लीजिए कि आपका चरित्र एक मंच पर खड़ा है। प्लेटफ़ॉर्म के नोड में वर्ण का नोड होता है। इसलिए, जब भी प्लेटफ़ॉर्म चलता है, तो उसमें मौजूद नोड्स (इस मामले में चरित्र) भी हिल जाएंगे।

ऐसा होने के लिए, प्रत्येक नोड में मूल नोड के सापेक्ष (x, y) स्थिति होनी चाहिए । उदाहरण के लिए, आपका चरित्र प्लेटफ़ॉर्म के सापेक्ष (1,0) पर स्थित हो सकता है , जो स्वयं (10,10) पर स्थित हो सकता है गेम मैप के सापेक्ष । इस तरह, यदि प्लेटफ़ॉर्म चलता है, तो आपका चरित्र अंतर्निहित रूप से आगे बढ़ेगा।

इस पदानुक्रमित वृक्ष में, प्रत्येक नोड की स्थिति उसकी स्थिति के योग के बराबर होती है और साथ ही उसके प्रत्येक मूल नोड की स्थिति। मान लीजिए कि हम मानचित्र पर चरित्र की स्थिति प्राप्त करना चाहते हैं। हम गणना करते हैं:

(चरित्र की स्थिति) + (मूल नोड की स्थिति) + (रूट नोड स्थिति) = (1,0) + (10,10) + (0,0) = (11,0)

ठीक है, इसलिए इस समय आपका चरित्र मंच पर खड़ा है। कूदने के बारे में क्या? खैर, जिस पल वह कूदता है, आप उसे मंच से अलग कर देते हैं और उसे प्लेटफॉर्म वाले नोड से जोड़ देते हैं ; इस स्थिति में, नक्शा (रूट नोड)।

जब वह फिर से उतरता है, तो उसे जो भी उतरा नोड पर संलग्न करें।


1
मैं खिलाड़ी को प्रभावित करने के लिए नोड से x और y गति का भी उपयोग करूंगा। उदाहरण 1: प्लेटफ़ॉर्म वास्तव में तेज़ गति से आगे बढ़ता है और रुकता है, खिलाड़ी की गति बढ़ती है और उसे लॉन्च किया जाता है। उदाहरण 2: प्लेटफ़ॉर्म एक धीमी गति से गिरने वाले खिलाड़ी की तुलना में थोड़ा धीमा चल रहा है। मंच के बजाय पर देश के लिए सुरक्षित होना चाहिए SPLUT
AttackingHobo

यह एक दिलचस्प दृष्टिकोण है, लेकिन मेरे इंजन में परिवर्तन को पूर्ण रूप से बदलने की अनुमति देता है। हो सकता है कि अगर मैं एक घटक के रूप में objectOnPlatform बनाऊं जो मैं किसी भी वस्तु के लिए कर सकता हूं जो अस्थायी रूप से यह प्रभाव देता है?
Iain

10

मैं इसे एक छद्म भौतिकी समस्या के रूप में मानने का सुझाव दूंगा और इसे जमीनी घर्षण का उपयोग करके हल करूंगा।

आप पहले से ही जमीन पर चरित्र को धारण करने के लिए गुरुत्वाकर्षण का उपयोग कर रहे हैं, यह उन स्थितियों को संभालता है जहां प्लेटफॉर्म ऊपर और नीचे चलते हैं। बाएं और दाएं आंदोलन को संभालने के लिए, जमीन को चरित्र पर बहुत अधिक घर्षण करना चाहिए। आमतौर पर यह घर्षण स्तर 1.0 या 100% होगा।

यदि पात्र अभी भी खड़ा है, तो उनका वेग 0 है, और वे घर्षण के कारण मंच के वेग का 100% भाग प्राप्त करते हैं। कुछ इस तरह है:

character_velocity = friction * platform_velocity

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

कम लटकने वाली दीवारों जैसे मुद्दों से निपटना भी आसान है जो आपके खिलाड़ी को एक चलते हुए मंच से टकरा सकते हैं। यदि आप बस चरित्र को माता-पिता के मंच के बच्चे के रूप में मानते हैं, तो यह एक अच्छा मौका है कि यह आपके टकराव का पता लगाने के बाकी कार्यों के बिना बहुत आसानी से बातचीत नहीं करेगा।


0

आप खिलाड़ी के स्तर को "स्तर में पूर्ण" नहीं बल्कि "प्लेटफ़ॉर्म के सापेक्ष" ठीक कर सकते हैं, फिर एक फ़ंक्शन होता है जो उसकी वास्तविक स्थिति देता है। मुझे यह पसंद नहीं है।

खिलाड़ी को प्लेटफ़ॉर्म पर बाँधने के लिए शायद (और सरल) बेहतर होगा ताकि जब प्लेटफ़ॉर्म + x / + y चले, तो खिलाड़ी उतना ही आगे बढ़े।

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