सभी वस्तुएं एकत्र करने के बाद दरवाजा खोलना

Lesson 7 of 10 • 10 XP

Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

इस पाठ में, हम पहले से बनाए गए संकलन योग्य वस्तु तर्क का उपयोग करेंगे ताकि गेम के अंदर एक क्रिया का संचालन किया जा सके।

उदाहरण के लिए, हम एक दरवाजे को बनाएंगे जो खिलाड़ी के रास्ते में बाधा डालता है, और इसे केवल तब हटाना है जब मानचित्र में सभी वस्तुएं एकत्र कर ली जाएं।

यह एक बहुत सामान्य गेमप्ले संरचना है: खिलाड़ी एक उद्देश्य को पूरा करता है, और गेम किसी चीज़ को अनलॉक करके प्रतिक्रिया करता है। यह एक दरवाजा, एक प्लेटफार्म, एक लिफ्ट, एक पुल, एक कटसिन, एक बॉस लड़ाई, या किसी अन्य प्रगति घटना हो सकती है।

इस पाठ में, आप सीखेंगे कि कैसे एक Entity के तर्क से दूसरे Entity तक पहुंचा जाए और उसे परिवर्तित किया जाए। इस मामले में, खिलाड़ी संकलन प्रगति की जांच करेगा और फिर दरवाजे को दृश्य से हटा देगा।

1. दरवाजे को हटाने के लिए तर्क बनाना

आइए हम अपने दरवाजे के लिए एक नई Entity Template बनाने से शुरू करें।

Mesh को कॉन्फ़िगर करें जो इसकी दृश्य प्रतिनिधित्व के रूप में उपयोग किया जाएगा और एक भौतिकी घटक जोड़े ताकि दरवाजा खिलाड़ी के मार्ग को अवरुद्ध कर सके।

चूंकि दरवाजे को चरित्र को इसके माध्यम से चलने से रोकना चाहिए, इसलिए भौतिकी घटक में Ghost विकल्प को सक्षम न करें

एक Ghost भौतिक शरीर टकराव का पता लगा सकता है, लेकिन यह भौतिक रूप से गति को अवरुद्ध नहीं करता है। संकलन योग्य वस्तु के लिए, यह बिल्कुल वही था जो हम चाहते थे। लेकिन दरवाजे के लिए, हम इसके विपरीत चाहते हैं: खिलाड़ी को तब तक गुजरने में सक्षम नहीं होना चाहिए जब तक कि शर्त पूरी न हो जाए।

3 कुंजी दबाकर, आप Entity का टकराव पूर्वावलोकन देख सकते हैं। यह पुष्टि करने के लिए उपयोगी है कि भौतिक आकार सही ढंग से दरवाजे से मेल खा रहा है।

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

आपके गेम की आवश्यकताओं और प्रदर्शन के अनुसार सबसे उपयुक्त विकल्प चुनें।

image.png

हमने पहले जो सिस्टम बनाया था, वह हमें दरवाजे को हटाने के लिए नियंत्रित करने के लिए आवश्यक जानकारी देता है।

यह स्वचालित रूप से दृश्य में उपस्थित संकलन योग्य वस्तुओं की कुल संख्या की गणना करता है, चाहे मानचित्र में कितनी भी वस्तुएं हों, और यह भी ट्रैक करता है कि उनमें से कितनी पहले से ही खिलाड़ी द्वारा एकत्रित की गई हैं।

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

image.png

इन दो सूचनाओं के साथ — एकत्रित वस्तुएं और कुल वस्तुएं — हम बस दोनों मानों की तुलना कर सकते हैं।

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

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

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

इसके लिए, Collected Item और Max Item गुण प्राप्त करें और एक तुलना नोड का उपयोग करें ताकि यह सत्यापित किया जा सके कि दोनों मान बराबर हैं।

यदि शर्त सच है, तो इसका मतलब है कि खिलाड़ी ने दृश्य में उपलब्ध सभी वस्तुओं को एकत्र किया है और प्रगति को अनलॉक करने के लिए आवश्यक आवश्यकता को पूरा किया है।

image.png

इस सत्यापन से, हम दरवाजे को हटाने के लिए जिम्मेदार तर्क को निष्पादित कर सकते हैं और अगले क्षेत्र में पहुंच की अनुमति दे सकते हैं।

इसके लिए, हम खिलाड़ी तर्क से एक Entity को एक्सेस और परिवर्तित करेंगे।

पहले, Scene प्राप्त करें और Get Entities With Name नोड का उपयोग करें, दरवाजे के Entity के नाम को पास करते हुए। इस मामले में, नाम है Door

यह नोड उस नाम के साथ पाए जाने वाले Entities की एक सूची लौटाता है।

फिर एक Get नोड का उपयोग करें ताकि सूची में पहले पाए गए Entity को पुनः प्राप्त कर सकें।

आखिर में, उस Entity को Kill नोड से जोड़ें।

जब यह तर्क निष्पादित होता है, तो दरवाजा दृश्य से हटा दिया जाएगा।

image.png

यह समझना महत्वपूर्ण है कि यहां क्या हो रहा है।

खिलाड़ी दरवाजे से सीधे जुड़े हुए नहीं है, न ही वह एक चाइल्ड या पेरेंट Entity है। इसके बजाय, खिलाड़ी वर्तमान दृश्य लेकर, Door नाम के एक Entity की खोज करता है, इसे परिणाम सूची से प्राप्त करता है, और फिर इसे हटा देता है।

इसका मतलब है कि आप एक तर्क बना सकते हैं जहां एक वस्तु दूसरे वस्तु को दृश्य में प्रभावित करती है, जो गेमप्ले इंटरैक्शन बनाने के लिए आवश्यक है।

एक बात ध्यान में रखने के लिए है कि Get Entities With Name एक सूची लौटाता है क्योंकि एक ही नाम वाले एक से अधिक Entity हो सकते हैं। इस उदाहरण में, हम सूची के इंडेक्स 0 को प्राप्त कर रहे हैं, जिसका अर्थ है कि हम पहले खोजे गए परिणाम का उपयोग कर रहे हैं। इस साधारण मामले के लिए, यह ठीक है। लेकिन बड़े प्रोजेक्ट्स में, यह एक अच्छा विचार है कि महत्वपूर्ण Entity नामों को व्यवस्थित रखा जाए, या स्थिति के आधार पर टैग और अन्य संदर्भों का उपयोग किया जाए।

यह तर्क कई अलग-अलग तरीकों से विस्तारित किया जा सकता है।

इस उदाहरण में, हमने एक दरवाजे को हटाने के लिए सभी वस्तुओं के संग्रह का उपयोग किया, लेकिन यही सिद्धांत आपके खेल के अंदर लगभग किसी भी घटना पर लागू किया जा सकता है।

एक दरवाजे को हटाने के बजाय, आप कर सकते हैं:

  • एक प्लेटफार्म को स्थानांतरित करें
  • एक लिफ्ट को सक्रिय करें
  • एक कटसिन चलाएं
  • एक लीवर को सक्षम करें
  • एक बॉस लड़ाई शुरू करें
  • एक नया क्षेत्र अनलॉक करें
  • दुश्मनों को स्पॉन करें
  • स्तर के उद्देश्य को बदलें

सबसे महत्वपूर्ण बात यह है कि अब आपके पास Cave की दृश्य तर्क का उपयोग करके उद्देश्यों और पुरस्कार बनाने के लिए आवश्यक उपकरण हैं।

इसलिए, एक शानदार अभ्यास यह है कि आप इस प्रणाली को इस पाठ में दिखाए गए उदाहरण से अलग कुछ में अनुकूलित करने की कोशिश करें। आप अपनी स्वयं की शर्तें, अपनी स्वयं की पुरस्कार बना सकते हैं और जब आपने अभी तक सीखा है, तब नई संभावनाओं की खोज कर सकते हैं।

image.png