एकता के साथ बेसिक एंड्रॉइड गेम कैसे बनाएं

इसी तरह के ट्यूटोरियल में, हम एक बुनियादी बनाने के लिए जा रहे हैं एंड्रॉयड एकता का उपयोग कर खेल।



आवश्यकताएँ:

  • एकता
  • नोटपैड ++ की तरह एक अच्छा पाठ संपादक (वैकल्पिक लेकिन अनुशंसित)
  • Android एसडीके
यदि आपके पास पहले से यह नहीं है, तो आपको एकता एसडीके और एंड्रॉइड एसडीके को डाउनलोड और इंस्टॉल करके शुरू करना चाहिए। हमें Android SDK की आवश्यकता है ताकि हम एंड्रॉइड वातावरण के अंदर गेम की एपीके का परीक्षण कर सकें।

एकता लॉन्च करें और एक नया प्रोजेक्ट बनाएं। इसे 2 डी प्रोजेक्ट बनाएं।



परिचित होने के लिए कई पैनल हैं - पदानुक्रम पैनल जिसमें हमारे सभी दृश्य तत्व शामिल होंगे (दृश्य = जो भी 'स्तर' आप वर्तमान में काम कर रहे हैं)। फिर गेम टैब है जो संपादक के अंदर रहते हुए आपके गेम को खेलने / परीक्षण करने के लिए उपयोग किया जाता है, और दाईं ओर आपके पास इंस्पेक्टर पैनल है, जहां आप प्रकाश, भौतिकी आदि विभिन्न चीजों को संपादित करेंगे।



पहली चीज जो हम करना चाहते हैं वह स्प्राइट बनाना है - यह हमारा मुख्य चरित्र होगा (जो हम नियंत्रित करते हैं)। आप या तो अपना स्वयं का स्प्राइट आरेखित कर सकते हैं, जैसे आंखों से एक वर्ग खींच सकते हैं, या आप इंटरनेट से एक स्प्राइट को पकड़ सकते हैं - बस यह सुनिश्चित करें कि यह एक .PNG फ़ाइल (पारदर्शी पृष्ठभूमि) हो।



मुख्य दृश्य विंडो (सबसे बड़ी खिड़की) पर अपने स्प्राइट को खींचें और छोड़ें - यह बाईं ओर पदानुक्रम पैनल पर भी दिखाई देगा।

इसलिए अब हम कुछ प्लेटफ़ॉर्म बनाएंगे - ये साधारण वर्ग हो सकते हैं, क्योंकि हम आसानी से दीवारों और अन्य प्लेटफार्मों को बनाने के लिए उनका आकार बदलने में सक्षम होंगे।

तो बस एक नया वर्ग बनाएं 'स्प्राइट' और खींचें और इसे दृश्य विंडो पर छोड़ दें जैसे आपने अपने स्प्राइट चरित्र के साथ किया था।



अब हमें अपने मुख्य चरित्र को भौतिकी देने के लिए एकता को निर्देश देने की आवश्यकता है - अपने मुख्य स्प्राइट चरित्र पर क्लिक करें (यह दृश्य विंडो में नीले रंग में हाइलाइट किया जाना चाहिए), फिर इंस्पेक्टर पैनल पर, 'गेम ऑबजेक्ट्स' देखें।

'घटक जोड़ें> भौतिकी 2D> RigidBody2D' पर क्लिक करें। यह स्वचालित रूप से आपके स्प्राइट में भौतिकी जोड़ देगा, जिसे आप अन्यथा किसी अन्य एसडीके में खुद को स्क्रिप्ट करना होगा।

हम मुख्य स्प्राइट चरित्र को नियंत्रण से बाहर घूमने से रोकना चाहते हैं - इसलिए इंस्पेक्टर पैनल में बाधा टैब ढूंढें (मुख्य स्प्राइट अभी भी दृश्य विंडो में हाइलाइट किया गया है), और 'फ्रीज रोटेशन जेड' के लिए बॉक्स की जांच करें।

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

हम चरित्र को घूमने और चारों ओर फ़्रीव्हीलिंग को रोकने के लिए अपनी अभिविन्यास को भी ठीक करना चाहते हैं। निरीक्षक में the बाधाओं का पता लगाएं ’खिलाड़ी को चयनित करने के लिए और रोटेशन को स्थिर करने के लिए बॉक्स पर टिक करें। अब फिर से खेलें पर क्लिक करें और आपको अपने खिलाड़ी को अब आसमान से उसके अनंत कयामत तक गिरना चाहिए।

हमारे मुख्य स्प्राइट कैरेक्टर को केवल अंतहीन रूप से गिरने से रोकने के लिए, हमें एक कोलाइडर जोड़ने की आवश्यकता है। यह मूल रूप से एक आकृति की ठोस रूपरेखा है जिसे हम मुख्य स्प्राइट वर्ण में जोड़ देंगे। अपने मुख्य स्प्राइट चरित्र को हाइलाइट करें, 'घटक जोड़ें> भौतिकी 2D> BoxCollider2D पर क्लिक करें।

अब आपके द्वारा पहले बनाए गए प्लेटफॉर्म के साथ भी वही सटीक काम करें। आपका मुख्य स्प्राइट चरित्र अब प्लेटफ़ॉर्म के साथ 'टकराना' और वहां रहना चाहिए।

इसलिए अब हम यह सुनिश्चित करना चाहते हैं कि कैमरा आपके मुख्य स्प्राइट कैरेक्टर को फॉलो करेगा - सीन के अंदर, पहले से ही कैमरा ऑब्जेक्ट होना चाहिए। आप इसे खींचना चाहते हैं के शीर्ष पर मुख्य प्रेत चरित्र।

यदि आप निर्माण कर रहे हैं तो यह विशेष रूप से महत्वपूर्ण है 3 डी आधारित धावक , कुछ इस तरह ढाल जहां आपको प्राथमिक गेम ऑब्जेक्ट (आपका मुख्य स्प्राइट कैरेक्टर) के पीछे लगातार बने रहने के लिए कैमरे की आवश्यकता होती है।

अब Hierarchy पैनल पर जाएं और GameObjects की सूची में, आप कैमरे को खींचना चाहते हैं नीचे मुख्य स्प्राइट चरित्र (प्लेयर गेमऑबजेक्ट)। यह मुख्य स्प्राइट चरित्र को spr बना देगा माता-पिता ' कैमरे का। इसलिए जब भी प्लेयर गेम ऑबजेक्ट स्क्रीन पर घूमता है, तो कैमरा को फॉलो करना चाहिए।

तो इस गेम ट्यूटोरियल के लिए, हम एक बुनियादी अंतहीन रनर टाइप गेम बनाने जा रहे हैं, कुछ ऐसा 3 चलाएं , जहां आपका मुख्य चरित्र स्क्रीन के पार चलेगा और बाधाओं को चकमा देगा (या यदि आप एक बाधा मारते हैं तो 'गेम ओवर'। यह कुछ स्क्रिप्ट लेने जा रहा है, जिनमें से अधिकांश इस गाइड में प्रदान किए जाएंगे।

'एसेट्स' फ़ोल्डर पर राइट क्लिक करें और एक नया फ़ोल्डर बनाएं - इसे नाम दें स्क्रिप्ट । अब इस नए फ़ोल्डर पर राइट क्लिक करें और 'Create> C # Script' पर क्लिक करें और इसे नाम दें PlayerControls । यह स्क्रिप्ट हमारे मुख्य प्रेत चरित्र के व्यवहार को परिभाषित करने वाली है।

जब आप इस नई स्क्रिप्ट पर डबल क्लिक करते हैं, तो यह चाहिए Visual Studio में खोलें - वैकल्पिक रूप से (और मेरी व्यक्तिगत पसंद), आप इसे नोटपैड ++ जैसी किसी चीज़ में संपादित कर सकते हैं।

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

लाइन के ऊपर शून्य प्रारंभ ():

जनता Rigidbody2D आरबी;

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

तो अगला, भौतिकी वस्तु का पता लगाएं।

rb = GetComponent< Rigidbody2D > ();

और आप इस लाइन को अपडेट के अंदर जोड़ देंगे ()

rb.velocity = नया वेक्टर 2 (3, rb.velocity.y);

अपडेट () क्या करता है लगातार ताज़ा है, इसलिए वहां जोड़ा गया कोई भी कोड लगातार चलेगा (जब तक कि वस्तु नष्ट नहीं हो जाती)। इसलिए हमने जो स्क्रिप्ट की है वह निर्देश है कि हम चाहते हैं कि कठोर व्यक्ति वाई अक्ष (rb.velocity.y) पर समान गति का उपयोग करके एक नया वेक्टर रखे, लेकिन क्षैतिज अक्ष पर 3 की गति के साथ। भविष्य में, आप can का उपयोग भी कर सकते हैं FixedUpdate () ' जो समान है लेकिन अलग है, क्योंकि आप स्क्रिप्ट की अद्यतन / ताज़ा राशि को नियंत्रित कर सकते हैं।

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

प्लेयर इनपुट कंट्रोल बनाना

इसलिए क्योंकि यह बाधाओं के साथ एक अंतहीन धावक शैली का खेल है, हमें खिलाड़ी के लिए नियंत्रणों को जोड़ने की जरूरत है जैसे कि 'जंप' बटन।

स्क्रिप्ट को पहले से खोलें, और हम इस अतिरिक्त कोड को जोड़ने जा रहे हैं:

 अगर (इनपुट.गेटहाउसबटनडाउन (0)) {rb.velocity = नया वेक्टर 2 (rb.velocity.x, 5); }

आप इसे अपडेट () विधि के अंदर डालने जा रहे हैं, और यह मूल रूप से क्या करता है, एकता को बताता है कि जब खिलाड़ी अपने माउस बटन (जिसे एंड्रॉइड पर स्क्रीन टैप के रूप में अनुवादित किया जाएगा) पर क्लिक करता है, तो मुख्य स्प्राइट वर्ण 'कूद' जाएगा ' हवा में। ऐसा इसलिए है क्योंकि हमने 5 अक्ष के मान के साथ Y अक्ष पर एक वेग जोड़ा है (एक उच्च मूल्य का मतलब उच्च कूद होगा, निश्चित रूप से)।

यदि आप कोडिंग से बहुत अधिक परिचित नहीं हैं, तो हमने उपयोग किया अगर बयान क्योंकि अगर मूल रूप से एक 'करना या न करना' निर्देश है - इसका शाब्दिक अर्थ है यदि ऐसा होता है, तो यह कमांड करें । इसलिए यदि खिलाड़ी माउस को क्लिक नहीं कर रहा है (या अपनी एंड्रॉइड स्क्रीन को टैप कर रहा है) तो जाहिर है कि स्क्रिप्ट नहीं चलेगी।

आगे बढ़ो और 'प्ले' बटन पर क्लिक करें और सुनिश्चित करें कि यह जारी रखने से पहले सही ढंग से काम करता है।

इसके बाद, हम अपनी बाधाओं को जोड़ने जा रहे हैं (जो मुख्य चरित्र स्प्रिट को 'नष्ट' कर सकते हैं), एक गेम स्कोर, और एक 'गेम ओवर' मेनू।

यदि आपने अभी तक गेम का परीक्षण किया है, तो हमारे पास अभी तक एकमात्र समस्या यह है कि हमने जो 'जंप' बटन दबाया है, वह चरित्र को कूद देगा चाहे वे ग्राउंडेड हों या न हों - यह मूल रूप से फ्लैपी बर्ड्स हैं, न कि धावक की तरह हम चाहते हैं। लेकिन हम इसे ठीक करने जा रहे हैं।

स्क्रिप्ट में, इस बिट कोड को जोड़ें ऊपर अद्यतन () विधि:

 जनता ट्रांसफ़ॉर्म ग्राउंडचेक; जनता रूपांतरण शुरू करना; जनता   नाव groundCheckRadius; जनता लेयरमास्क whatIsGround; निजी   bool धरती पर; और फिर इस अगली पंक्ति को ऊपर अद्यतन विधि में जोड़ें अगर कथन: onGround = Physics2D.OverlapCircle (ग्राउंडचेक.पोजिशन, ग्राउंडचेकराडियस, whatIsGround); और इसके बाद आप '&& onGround' को शामिल करने के लिए इस निम्न पंक्ति को बदल देंगे अगर (Input.GetMouseButtonDown (0) और& onGround) {तो हमारी पूरी स्क्रिप्ट मूल रूप से इस तरह दिखनी चाहिए: जनता   कक्षा   PlayerControls : MonoBehaviour { जनता Rigidbody2D आरबी; जनता ट्रांसफ़ॉर्म ग्राउंडचेक; जनता रूपांतरण शुरू करना; जनता   नाव groundCheckRadius; जनता लेयरमास्क whatIsGround; निजी   bool धरती पर; शून्य   शुरू () {rb = GetComponent (); } शून्य   अपडेट करें () {rb.velocity = नया वेक्टर 2 (3, rb.velocity.y); onGround = Physics2D.OverlapCircle (ग्राउंडचेक.पोजिशन, ग्राउंडचेकराडियस, whatIsGround); अगर (Input.GetMouseButtonDown (0) और& onGround) {rb.velocity = नया वेक्टर 2 (rb.velocity.x, 5); }}}

यह समझने के लिए कि हमने क्या किया है, हमने एक नया 'परिवर्तन' बनाया है, जिसका अर्थ है कि खेल की दुनिया में एक स्थान। हमने इसकी त्रिज्या निर्धारित कर दी है और हम एकता को यह जांचने के लिए निर्देश दे रहे हैं कि क्या त्रिज्या हमारी 'जमीन' परत के साथ ओवरलैप हो रही है - और इसलिए यदि हमारा त्रिज्या 'ग्राउंड' के साथ समन्वयित है, तो हमारा चरित्र कूदने में सक्षम होना चाहिए, और यदि हम 'पहले से ही एक छलांग से हवा में, हम फिर से कूदने में सक्षम नहीं होना चाहिए। मूल रूप से, धरती पर सच होगा अगर नाम का रूपांतरण groundCheck जमीन की परत के साथ अतिव्यापी है। उम्मीद है कि समझ में आता है।

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

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

अब मुख्य चरित्र स्प्राइट का चयन करें और इंस्पेक्टर पैनल पर जाएं - चेक ग्राउंड ऑब्जेक्ट को 'ग्राउंडचेक' नामक स्थान पर खींचें। Of ट्रांसफॉर्म ’की स्थिति इस नई वस्तु की स्थिति के बराबर होनी चाहिए, और जहां यह कहता है“ रेडियस ”, इसे 0.1 कर दें।

हमें जमीनी परत को परिभाषित करने की आवश्यकता है। बस जमीनी इलाके का चयन करें और इंस्पेक्टर में, 'परत: डिफ़ॉल्ट' (यह एक ड्रॉपडाउन बॉक्स) के लिए बटन ढूंढें और 'परत जोड़ें' चुनें।

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

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

टक्कर और खेल मेनू पर खेल खत्म

तो इसे पूरी तरह से लपेटने के लिए, अंतिम चीजें जो हम करना चाहते हैं वे हैं: एक गेम ओवर में बाधाओं के साथ टकराना, और बी: एक फिर से खेलने के बटन के साथ एक 'गेम ओवर' मेनू स्क्रीन बनाएं।

आप मूल रूप से क्या करना चाहते हैं:

  1. एक जोड़ें खिलाड़ी ऑब्जेक्ट और असाइन करें कठोर शरीर और एक कोलाइडर इसके लिए अपनी पसंद के।
  2. A जोड़ें दुश्मन ऑब्जेक्ट और असाइन करें कठोर शरीर और एक कोलाइडर यह करने के लिए अपने choise की। (और वैकल्पिक, जोड़ें 'दुश्मन' टैग इसे)
  3. कोई नया बनाएं सी # स्क्रिप्ट और इसे एक घटक के रूप में जोड़ें खिलाड़ी (या खिलाड़ी से जुड़ी किसी भी स्क्रिप्ट का उपयोग करें, यदि आपके पास पहले से ही एक नया बनाने की कोई आवश्यकता नहीं है)
  4. इसे अपनी स्क्रिप्ट में जोड़ें:
शून्य OnCollisionEnter ( टक्कर टक्कर) { डिबगलॉग ( 'टकराव'); // यह देखने के लिए जांचें कि क्या यह टक्कर भी दर्ज करता है, यदि यह काम करता है तो आप इस लाइन को हटा सकते हैं अगर (coll.gameobject। टैग == 'दुश्मन') { // देखता है कि जिस वस्तु से आपका खिलाड़ी टकराया है उसका टैग 'दुश्मन' है