पोर्टल्स की टक्कर का पता लगाने को कैसे लागू करें?


12

उदाहरण के लिए, इस परिदृश्य को लें (मेरे भयानक ड्राइंग कौशल का उपयोग करें): छवि

यह "पोर्टल" पर आधारित है, जहां स्टिकमैन नीले पोर्टल (जो लाल पोर्टल से जुड़ा हुआ है) से गुजर रहा है, लेकिन लाल पोर्टल पर उसे रोकने वाली एक दीवार है। इसलिए वह पोर्टल के माध्यम से पूरी तरह से नहीं जा सकता।

तो मेरा सवाल यह है: मैं उनके साथ भौतिकी / टक्कर का पता कैसे लगाऊँ? क्या मैं खिलाड़ी का टुकड़ा करूं? क्या उन्हें लिंक करने का कोई तरीका है? क्या कोई भौतिकी इंजन है जो ऐसा करने का समर्थन करता है? यदि नहीं, तो मैं कैसे बनाऊंगा?


जहाँ तक मुझे पता है कि वे पोर्टल 1. की
डेवेलपमेंट


@ Byte56, धन्यवाद, मैंने अपनी पोस्ट अपडेट की। मुझे लगता है कि इसे इसे और स्पष्ट करना चाहिए :)
MiJyn

1
मुझे लगता है कि आपके द्वारा वर्णित स्थिति पोर्टल में बहुत ही असामान्य है (यदि ऐसा कभी होता है) क्योंकि पोर्टल मुक्त फ्लोटिंग प्लेसमेंट नहीं हैं। उन्हें दीवारों पर रखा जाता है, और केवल विशिष्ट दीवारें। मुझे ऐसी स्थिति याद नहीं है जहाँ मैं एक पोर्टल रखने में सक्षम था, लेकिन पोर्टल के दूसरे छोर पर एक बाधा के कारण इसके माध्यम से जाने में असमर्थ था। मुझे लगता है कि आप संक्रमण की अवधि के लिए दोनों स्थानों में खिलाड़ी की एक अस्थायी प्रतिलिपि बना सकते हैं।
MichaelHouse

2
@ बाइट 56: आपको बहुत याद नहीं करना चाहिए। मुझे याद है कि यह पोर्टल 1 में किया जा रहा है। मुझे लगता है कि एक कुचल क्षेत्र को याद किया जा सकता है, जहां कोई मरने से बचने के लिए एक पोर्टल का उपयोग कर सकता है। पोर्टल्स के पास सामान के साथ टकराव एक सामान्य घटना है, और इंजन इसे आसानी से संभालता है।
निकोल बोलस

जवाबों:


7

पोर्टल खेल एक अच्छा तरीका है जिसके द्वारा वे इस समस्या का समाधान है:

खिलाड़ी स्रोत पोर्टल (नीला) के माध्यम से चिपक जाता है और लक्ष्य पोर्टल (नारंगी) से बाहर चिपके हुए देखा जाता है। खिलाड़ी को लक्ष्य पोर्टल पर कॉपी किया जाता है और इसके माध्यम से कदम बढ़ाते देखा जाता है। खेल एक दूसरे कैमरे और रेंडर-टेक्सचर का उपयोग करके स्रोत पोर्टल के माध्यम से देखने पर आपके द्वारा देखी गई छवि को प्रस्तुत करता है।

हालांकि, लक्ष्य स्थान पर खिलाड़ी की प्रतिलिपि भौतिकी के साथ बातचीत नहीं करती है। यह केवल प्रयोजनों के प्रतिपादन के लिए है। इसके बजाय, वे स्रोत पोर्टल के दूसरी तरफ आभासी टकराव की वस्तु बनाते हैं, और खिलाड़ी को इसके बजाय टकराते हैं। इससे भौतिकी सरल रहती है।

आपको केवल उन वर्चुअल ऑब्जेक्ट्स की आवश्यकता है जहां तक ​​खिलाड़ी पोर्टल के माध्यम से पूरी तरह से जाने के बिना पहुंच सकते हैं। जैसे ही खिलाड़ी पोर्टल से पूरी तरह से गुजरता है, स्थिति उलट हो जाती है।

चित्रण के लिए एक चित्र : नीला पोर्टल स्रोत पोर्टल है, नारंगी पोर्टल लक्ष्य पोर्टल है। धराशायी सफेद बॉक्स आभासी टकराव की वस्तु है, जबकि असली बॉक्स प्रदान की गई वस्तु है। खिलाड़ी (लाल बिंदु के साथ) केवल उसके चारों ओर की वस्तुओं के साथ बातचीत करता है। नारंगी पोर्टल पर वस्तुओं को पूरी तरह से नजरअंदाज कर दिया जाता है।

यहाँ छवि विवरण दर्ज करें


4
" एक दूसरे कैमरे और रेंडर-टू-टेक्सचर का उपयोग करना " पोर्टल 1 पर डेवलपर्स कमेंट्री ने स्पष्ट रूप से कहा कि वे रेंडर-टू-टेक्सचर का उपयोग नहीं करते हैं, क्योंकि यह उनकी जरूरतों के लिए अच्छी तरह से काम नहीं करता था (विशेषकर अन्य पोर्टल्स से पोर्टल्स को देखकर) )। इसके बजाय, वे मूल रूप से दुनिया के एक संस्करण को पोर्टल के दूसरी तरफ बदल देते हैं और इसके माध्यम से बस फिर से प्रस्तुत करते हैं।
निकोल बोलस

वाह, यह लगभग सब कुछ का जवाब देता है! मैं बस सोच रहा हूं, क्या यह पोर्टल द्वारा वस्तुओं के अंदर छेद के साथ काम करता है?
मिजीन

6

यहां बताया गया है कि मैं कैसे कोशिश करूं और यह करूं।

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

आदर्श रूप से आप प्रत्येक खिलाड़ी के आधे हिस्से के लिए गुरुत्वाकर्षण को अलग से लागू करेंगे, लेकिन आप पोर्टल के किनारे खिलाड़ी के केंद्र के लिए इसे लागू करने में सक्षम हो सकते हैं।

उन टकरावों को अनदेखा करने के लिए आपको एक उपयुक्त वॉल्यूम सेट करने की आवश्यकता है, और यदि एक बिंदु इसके भीतर है तो परीक्षण करें। एक सिलेंडर (संभवतः लंबवत फैला हुआ) एक अच्छा विकल्प प्रतीत होगा। परीक्षा फिर कुछ इस तरह हैif (!collisionPoint.InsideCylinder(portal)) ProcessCollision(); else IgnoreCollision();

मेरा मानना ​​है कि अधिकांश भौतिकी इंजनों में फ़िल्टरिंग के लिए एक प्रणाली होती है, जो किसी वस्तु से टकरा सकती है, इसलिए एक मानक भौतिकी इंजन का उपयोग करना संभव होना चाहिए। उदाहरण के लिए http://bulletphysics.org/mediawiki-1.5.8/index.php/Collision_Filtering#Custom_collision_filtering

परिणामों को संयोजित करने के लिए सबसे सरल विकल्प शायद दोनों के बीच किसी प्रकार के अनम्य बाधा को जोड़ना होगा , और भौतिकी को इसे संभालना होगा।


हम्म, ठीक है, मैं यह कैसे करूँगा? मुझे खिलाड़ी की नकल करने के बारे में भाग मिलता है, लेकिन इसके अलावा, मैं क्लूलेस हूं। मैं विपरीत दिशा से टकराव को कैसे अनदेखा करूंगा? मैं परिणामों को कैसे संयोजित करूंगा?
21 जून को MiJyn

मैंने कुछ और विवरणों में संपादन किया है।
एडम

धन्यवाद, मैं इस बारे में
सोचूंगा

बहुत बहुत धन्यवाद, आपका जवाब और मेरे सवाल का जवाब प्राक्रिंक :) अब यह तय करने के लिए कि "सही उत्तर"
किसको

4

मैं कैसे गणना करूंगा कि खिलाड़ी कितना नीचे जाता है?

आपको क्यों चाहिए होगा? आपको यह गणना करने की आवश्यकता नहीं है कि कोई खिलाड़ी "नीचे" कितनी दूर जाता है; आपको पता चल जाएगा कि सिमुलेशन के माध्यम से वस्तु कितनी दूर तक जाती है।

मैं पोर्टल्स को कैसे कनेक्ट करूंगा?

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

भौतिकी सामान्य रूप से आगे बढ़ती है।


When an object touches the portal, it starts potentially colliding with things on the other sideहाँ बिल्कुल। मैं भौतिकी इंजन के साथ ऐसा कैसे करूंगा? मुझे लगता है कि मेरा सवाल था :)
MiJyn

@ मिजीन: आप एक भौतिकी इंजन लिखते हैं जो ऐसा कर सकता है। पोर्टल को वास्तव में काम करने के लिए वाल्व को स्रोत इंजन को अनिवार्य रूप से तोड़ना पड़ा । कोई भी व्यावसायिक या ओपन-सोर्स भौतिकी इंजन स्वाभाविक रूप से ऐसा नहीं कर सकता है। पोर्टल की लोकप्रियता के बावजूद, बाजार पर पोर्टल क्लोन के स्कोर नहीं हैं, इसका एक कारण है।
निकोल बोलस 20

दिलचस्प है, क्योंकि बहुत सारे अन्य खेल हैं जिनमें बहुत समान मैकेनिक्स हैं (मीनक्रॉफ्ट के लिए TARDIS मॉड भी देखें)। मुझे यकीन है कि इसे आसानी से करने का कोई तरीका होना चाहिए ।
मेज़िन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.