प्रोग्रामिंग ए गेम विद यूनिटी: ए बिगिनर्स गाइड

प्रोग्रामिंग ए गेम विद यूनिटी: ए बिगिनर्स गाइड
यह गाइड एक मुफ्त पीडीएफ के रूप में डाउनलोड करने के लिए उपलब्ध है। इस फाइल को अभी डाउनलोड करें . बेझिझक इसे कॉपी करें और अपने दोस्तों और परिवार के साथ साझा करें।

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





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





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





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

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



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

आज मैं आपको उन सभी चीजों के बारे में बताऊंगा जो आपको एकता में एक खेल बनाने के लिए जानने की जरूरत है, जिसे दस मुख्य अध्यायों में विभाजित किया गया है:





§1-एकता के संस्करण

§2-एकता स्थापित करना





3-वस्तु-उन्मुख प्रतिमान का संक्षिप्त परिचय

§4–एकता मूल बातें

5–उदाहरण: खेल के मूल तत्व

§6-एकता में स्क्रिप्टिंग

§7–उदाहरण: स्क्रिप्टिंग पोंग

§8–दस्तावेज़ीकरण की खोज / अधिक सीखना

9-अपने गेम का निर्माण / एक स्टैंडअलोन एप्लिकेशन को संकलित करना

§10-समापन नोट्स

1. एकता के संस्करण

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

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

१.१ मूल्य निर्धारण

एकता का मुफ्त संस्करण, निश्चित रूप से, मुफ्त है। हालाँकि, कुछ सीमाएँ हैं: यूनिटी के मुफ्त संस्करण को किसी भी कंपनी को लाइसेंस नहीं दिया जा सकता है, जिसकी वार्षिक आय से अधिक है $ 100,000 . हालांकि ऐसे संगठन इस गाइड के दायरे से बाहर हैं, अगर आपको संदेह है कि आप ऐसे संगठन बन सकते हैं, तो शायद प्रो संस्करण के लिए वसंत करना बुद्धिमानी है।

एकता का प्रो संस्करण है एक महीना, या $ 1500 स्थायी लाइसेंस के लिए, और इसके साथ बनाए गए खेलों के साथ आप क्या कर सकते हैं इसकी कोई सीमा नहीं है। एक 30-दिन का निःशुल्क परीक्षण भी उपलब्ध है, जिसका उपयोग हम इस मार्गदर्शिका के लिए करेंगे, ताकि आपको उपलब्ध सुविधाओं का यथासंभव पूर्ण अवलोकन दिया जा सके। के माध्यम से एक वर्षीय छात्र लाइसेंस भी उपलब्ध है अध्ययन के लिये $१२९ .

1.2 विशेषताएं

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

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

2. एकता स्थापित करना

एकता स्थापित करने के लिए सीधा है। आप निष्पादन योग्य को से डाउनलोड कर सकते हैं यूनिटी३डी.कॉम/गेट-यूनिटी/डाउनलोड .

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

बधाई हो! अब आपके पास यूनिटी प्रो का 30-दिवसीय परीक्षण है। जब परीक्षण समाप्त हो जाता है, यदि आप प्रो संस्करण नहीं खरीदना चाहते हैं, तो आप मुफ्त संस्करण पर स्विच कर सकते हैं और अपनी मौजूदा सामग्री रख सकते हैं।

ट्विटर पर शब्दों को कैसे म्यूट करें

3. वस्तु-उन्मुख प्रतिमान का संक्षिप्त परिचय

एकता के साथ शुरुआत करने से पहले, यह महत्वपूर्ण है कि हम बुनियादी बातों पर थोड़ा ध्यान दें। एकता दोनों का समर्थन करती है सी # तथा जावास्क्रिप्ट के लिये गेम प्रोग्रामिंग ; हम इस ट्यूटोरियल के लिए C# के साथ काम करेंगे।

सबसे पहले, यदि आपने पहले कभी प्रोग्राम नहीं किया है, तो इस ट्यूटोरियल को एक तरफ रख दें और कुछ दिन माइक्रोसॉफ्ट के माध्यम से काम करने में बिताएं सी # भाषा प्राइमर जब तक आप सरल कार्यों के लिए भाषा का उपयोग करने में सहज महसूस न करें।

यदि आप C# से कुछ अलग चाहते हैं (लेकिन जरूरी नहीं कि एक भाषा जिसे आप एकता में उपयोग कर सकते हैं), तो शुरुआती लोगों के लिए छह सबसे आसान प्रोग्रामिंग भाषाओं के लिए हमारी मार्गदर्शिका देखें।

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

यहां समझने के लिए सबसे महत्वपूर्ण अवधारणा वस्तु-उन्मुख प्रतिमान है (संक्षिप्त रूप में खोलना ) ऑब्जेक्ट ओरिएंटेड भाषाओं में, प्रोग्राम को कार्यात्मक इकाइयों में विभाजित किया जाता है, जिन्हें कहा जाता है वस्तुओं . प्रत्येक वस्तु के अपने निजी चर और कार्य होते हैं। वस्तु-विशिष्ट कार्यों को कहा जाता है तरीकों .

यहां विचार प्रतिरूपकता है: प्रत्येक वस्तु को अलग करके, और अन्य वस्तुओं को इसके तरीकों के माध्यम से इसके साथ बातचीत करने के लिए मजबूर करके, आप संभावित अनजाने में बातचीत की संख्या को कम कर सकते हैं - और, विस्तार से, बग। आप ऐसी वस्तुएं भी बना सकते हैं जिन्हें आप बाद में बिना किसी संशोधन के पुन: उपयोग कर सकते हैं। एकता में, आप इन वस्तुओं का निर्माण करेंगे और उन्हें संलग्न करेंगे खेल संस्थाएं (जिसका व्यवहार वे शासित करेंगे)।

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

किसी ऑब्जेक्ट में एक नई स्क्रिप्ट संलग्न करना इस तरह दिखता है:

प्रथम, वस्तु का चयन करें और जाओ निरीक्षक . पर क्लिक करें घटक जोड़ें बटन।

के लिए जाओ नई स्क्रिप्ट , अपना इच्छित नाम दर्ज करें, और क्लिक करें बनाएं और जोड़ें .

अब आपके पास एक नई स्क्रिप्ट है जिसे आप उस पर डबल-क्लिक करके संपादित कर सकते हैं!

एक वर्ग फ़ाइल कुछ इस तरह दिखती है:

using UnityEngine;
public class Mook : MonoBehaviour {
private float health;
void Start () {
health = 100;
}
void Update(){
if (health > 0) {
/* Search for player
if you encounter the player on the road, kill him
if you get shot, remove a random amount of health */
}
}
}

आइए इसे तोड़ दें:

  • यूनिटीइंजिन का उपयोग करना: यह लाइन C# को बताती है कि हम यूनिटी के पुस्तकालयों का उपयोग करना चाहते हैं, जो हमें यूनिटी गेम इंजन से जुड़ने की अनुमति देता है।
  • पब्लिक क्लास मूक: मोनो बिहेवियर: यह पंक्ति वर्ग और उसके नाम की घोषणा करती है - मूक .
  • निजी फ्लोट स्वास्थ्य: यह एक निजी वर्ग चर घोषित करता है (जिसे केवल कक्षा के अंदर से बदला जा सकता है)। चर को एक मान दिया गया है शुरू .
  • शून्य प्रारंभ (): यह नामक एक विधि घोषित करता है शुरू . प्रारंभ एक विशेष विधि है जो केवल एक बार चलती है, जब खेल शुरू में शुरू होता है।
  • शून्य अद्यतन (): Update एक और खास तरीका है, जो हर फ्रेम पर चलता है। आपका अधिकांश गेम लॉजिक यहां जाएगा।
  • // यदि आप सड़क पर खिलाड़ी से मिलते हैं, तो उसे मार दें: यह पंक्ति एक टिप्पणी है (डबल स्लैश से शुरू होने वाली किसी भी पंक्ति को C# द्वारा अनदेखा किया जाता है)। टिप्पणियों का उपयोग स्वयं को यह याद दिलाने के लिए किया जाता है कि कोड के विशेष बिट क्या करते हैं। इस मामले में, इस टिप्पणी का उपयोग कोड के अधिक जटिल ब्लॉक के लिए किया जा रहा है जो वास्तव में वह करता है जो टिप्पणी का वर्णन करता है।

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

public float addTwoNumbers(float a, float b) {
return a+b;
}

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

इस विधि को उसी वर्ग के भीतर से कॉल करना (कहें, अंदर से अद्यतन ) इस तरह दिखता है:

float result = addTwoNumbers(1, 2);

किसी अन्य वर्ग से विधि को कॉल करना समान है:

addTwoNumbers instance;
float result = instance.addTwoNumbers(1, 2);

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

यदि आपकी स्क्रिप्ट किसी ऐसी वस्तु से जुड़ी है जिसमें विशेष गुण हैं (जैसे कि एक कण उत्सर्जक) जिसे GameObject मापदंडों के सामान्य सेट के तहत एक्सेस नहीं किया जा सकता है, तो आप इसका उपयोग करके इसे एक अलग तरह की गेम इकाई के रूप में मान सकते हैं। घटक प्राप्त करें तरीका।

इसके लिए वाक्यविन्यास इस तरह दिखता है:

GetComponent().Play();

यदि इनमें से कोई भी आपके लिए अपरिचित है, तो वापस जाएं और C# प्राइमर को देखें। जैसे-जैसे हम आगे बढ़ेंगे, यह आपको बहुत निराशा से बचाएगा।

4. एकता मूल बातें

इस खंड में, हम एकता इंजन के बुनियादी यांत्रिकी के माध्यम से अपना काम करने जा रहे हैं। एकता में कार्यप्रवाह कुछ इस प्रकार है:

  1. खेल में भूमिका निभाने के लिए एक निकाय बनाएं (रिक्त) गेमऑब्जेक्ट्स अमूर्त तार्किक कार्यों के लिए इस्तेमाल किया जा सकता है)।
  2. एक वर्ग फ़ाइल लिखें या खोजें, और इसे इकाई में एक स्क्रिप्ट के रूप में जोड़ें (इसका उपयोग करके) घटक जोड़ें में बटन निरीक्षक दृश्य।
  3. Daud > परीक्षण > डिबग > दोहराना जब तक यह काम नहीं करता और खेल के अगले तत्व पर आगे नहीं बढ़ता।

एकता कई बुनियादी दृश्य टैब के साथ आती है जिन्हें उपयोगकर्ता के स्वाद के लिए विभिन्न तरीकों से रखा जा सकता है। बड़े पांच हैं:

  1. खेल: खेल का एक चल रहा उदाहरण प्रदर्शित करता है जिसके साथ आप बातचीत कर सकते हैं और परीक्षण कर सकते हैं।
  2. दृश्य: का एक स्थिर, संपादन योग्य संस्करण प्रदान करता है गेम की दुनिया .
  3. निरीक्षक: आपको खेल की दुनिया में अलग-अलग संस्थाओं का चयन करके उन्हें संशोधित करने की अनुमति देता है संपादक टैब।
  4. परियोजना: आपको परियोजना की फाइलों के माध्यम से ब्राउज़ करने और मॉडल, सामग्री और अन्य संसाधनों को इसमें खींचने की अनुमति देता है संपादक उन्हें खेल की दुनिया में जगह देने के लिए टैब।
  5. पदानुक्रम: यह टैब दुनिया की सभी वस्तुओं को दिखाता है, जिससे आप दृश्य में दूर की वस्तुओं को ढूंढ सकते हैं, और माता-पिता की संस्थाओं को क्लिक करके और खींचकर एक दूसरे को ढूंढ सकते हैं।

इन सभी चीजों के स्थानों के लिए नीचे दिया गया चित्र देखें:

४.१ एकता संस्थाएं

4.1.1 मेष

जाल रास्ता है 3डी ज्यामिति एकता में दर्शाया गया है। आप या तो एकता के अंतर्निर्मित उपयोग कर सकते हैं प्राचीन ऑब्जेक्ट्स (क्यूब्स, गोले, सिलेंडर, आदि), या मॉडलिंग पैकेज से अपने खुद के 3D मॉडल आयात करें जैसे ब्लेंडर या माया . एकता विभिन्न प्रकार के 3D स्वरूपों का समर्थन करती है, जिनमें शामिल हैं एफबीएक्स , तथा .3ds .

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

4.1.2 जीयूआई तत्व

पारंपरिक जीयूआई स्प्राइट्स और टेक्स्ट का उपयोग करके प्रदर्शित किया जा सकता है जीयूआई पाठ और यह जीयूआई बनावट संपादक में GameObjects. हालांकि, UI तत्वों को संभालने का एक अधिक मजबूत और यथार्थवादी तरीका इसका उपयोग करना है 3डी पाठ तथा ट्रैक्टर GameObjects (पारदर्शी बनावट और एक अनलिमिटेड पारदर्शी शेडर के साथ) HUD तत्वों को खेल की दुनिया में संस्थाओं के रूप में रखने के लिए।

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

GUI तत्व (पाठ और बनावट) निरीक्षक टैब में संबंधित क्षेत्रों का उपयोग करके अपने आकार और पैमाने को समायोजित कर सकते हैं।

4.1.3 सामग्री

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

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

4.1.5 रोशनी

रोशनी हैं गेमऑब्जेक्ट्स जो दुनिया पर प्रोजेक्ट की चमक बिखेरता है। यदि आपके दृश्य में कोई रोशनी नहीं है, तो सभी बहुभुज समान चमक स्तर पर खींचे जाते हैं, जिससे दुनिया एक सपाट, धुली हुई दिखती है।

रोशनी को तैनात किया जा सकता है, घुमाया जा सकता है, और कई आंतरिक विशेषताएं हैं जिन्हें आप अनुकूलित कर सकते हैं। NS तीव्रता स्लाइडर प्रकाश की चमक को नियंत्रित करता है, और श्रेणी नियंत्रित करता है कि यह कितनी जल्दी समाप्त हो जाता है।

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

प्रकाश के तीन मुख्य प्रकार हैं स्थान , बिंदु , तथा दिशात्मक .

स्पॉट लाइट चर कोण के शंकु में केवल एक दिशा में 3D अंतरिक्ष और प्रोजेक्ट लाइट में एक स्थान है। ये फ्लैशलाइट्स, सर्चलाइट्स के लिए अच्छे हैं, और सामान्य तौर पर, आपको लाइटिंग का अधिक सटीक नियंत्रण प्रदान करते हैं। स्पॉट लाइट छाया डाल सकती है।

प्वाइंट रोशनी 3D स्थान में एक स्थान रखें, और सभी दिशाओं में समान रूप से प्रकाश डालें। बिंदु रोशनी छाया नहीं डालती है।

दिशात्मक रोशनी , अंत में, सूर्य के प्रकाश का अनुकरण करने के लिए उपयोग किया जाता है: वे प्रकाश को एक दिशा में प्रक्षेपित करते हैं जैसे कि असीम रूप से दूर से। दिशात्मक रोशनी दृश्य में प्रत्येक वस्तु को प्रभावित करती है, और छाया उत्पन्न कर सकती है।

4.1.6 कण प्रणाली

प्रति अणु प्रणाली एक है गेमऑब्जेक्ट जो एक साथ सैकड़ों या हजारों कणों को उत्पन्न और नियंत्रित करता है। कण छोटे, अनुकूलित 2डी ऑब्जेक्ट होते हैं जो 3डी स्पेस में प्रदर्शित होते हैं। कण प्रणालियां सरलीकृत प्रतिपादन और भौतिकी का उपयोग करती हैं, लेकिन बिना हकलाए वास्तविक समय में हजारों संस्थाओं को प्रदर्शित कर सकती हैं, जिससे वे धुएं, आग, बारिश, चिंगारी, जादू के प्रभाव और बहुत कुछ के लिए आदर्श बन जाते हैं।

ऐसे बहुत से पैरामीटर हैं जिन्हें आप इन प्रभावों को प्राप्त करने के लिए बदल सकते हैं, और आप एक कण प्रणाली को स्पॉन करके उन तक पहुंच सकते हैं घटक संपादक > कण प्रणाली का चयन > इंस्पेक्टर टैब खोलना . आप प्रत्येक कण के आकार, गति, दिशा, रोटेशन, रंग और बनावट को बदल सकते हैं, और उन अधिकांश मापदंडों को समय के साथ बदलने के लिए भी सेट कर सकते हैं।

नीचे टक्कर विशेषता, यदि आप इसे सक्षम करते हैं और सिमुलेशन स्थान को सेट करते हैं दुनिया आपको ऐसे कण मिलेंगे जो दुनिया में वस्तुओं से टकराएंगे, जिनका उपयोग बारिश, बहते पानी और चिंगारियों सहित कई यथार्थवादी कण प्रभावों के लिए किया जा सकता है।

5. उदाहरण: एक खेल के मूल तत्व

इस ट्यूटोरियल के लिए, हम का एक सरल गेम बनाने जा रहे हैं पांग -- कुछ ऐसा जिसे हमने पहले DIY में कई बार कवर किया है:

  • Arduino क्लासिक पोंग
  • Arduino OLED पोंग

इस खंड में, हम मुख्य तत्वों को व्यवस्थित करने के बारे में जानेंगे - स्क्रिप्टिंग ट्यूटोरियल बाद में आएगा।

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

यह टूट जाता है a गेंद वस्तु (एक गोला), ए स्पॉनर , दो पैडल प्रोप के साथ कण उत्सर्जक संलग्न एक 3डी-पाठ इकाई , और एक स्पॉट लाइट . इस ट्यूटोरियल के लिए, हम डिफ़ॉल्ट भौतिक सामग्री का उपयोग करेंगे उछाल , साथ उछाल गठबंधन करने के लिए सेट गुणा . यहाँ दस स्क्रीनशॉट में सेटअप कैसा दिखता है:

सबसे पहले, एक बनाएं घन प्रोप चप्पू के लिए।

इसे उचित रूप से स्केल करें, इसे डुप्लिकेट करें , और एक डाल वृत्त गेंद के लिए पैडल के बीच।

फिर, बनाएं a 3Dपाठ्यवस्तु तथा स्केल तथा पद यह सही ढंग से बदल रहा है फ़ॉन्ट आकार कम पिक्सेल वाली छवि प्राप्त करने के लिए विशेषता।

अगला, दो बनाएं कण प्रणाली , अपनी इच्छित विशेषताओं को चुनें और उन्हें पैडल से जोड़ें।

अगला, आप करना चाहेंगे कैमरे की स्थिति और घुमाएँ ताकि वह सीन को सही ढंग से फ्रेम कर सके। जब कैमरा चुना जाता है, तो आप निचले दाएं कोने में कैमरे के दृश्य का एक छोटा सा पूर्वावलोकन देख सकते हैं।

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

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

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

6. एकता में पटकथा

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

कीवर्ड और टिप्पणियों को हाइलाइट किया गया है नीला तथा हरा , और संख्यात्मक मान और तार में दिखाई देते हैं जाल . यदि आपने उपयोग किया है ग्रहण या अन्य आईडीई, मोनो डेवलपमेंट बहुत समान है। आप ऐसा कर सकते हैं निर्माण सिंटैक्स त्रुटियों की जांच के लिए संपादक के अंदर से आपकी स्क्रिप्ट, जैसे:

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

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

किसी वस्तु में मौजूद तत्वों की सूची इस प्रकार हो सकती है (उपरोक्त उदाहरण में हमारे एक पैडल के निरीक्षक के दृष्टिकोण से ली गई):

  1. परिवर्तन
  2. घन (मेष फ़िल्टर)
  3. बॉक्स कोलाइडर
  4. मेष रेंडरर

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

६.१ रूपांतरण

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

transform.position = newPositionVector3;
transform.rotation = newRotationQuaternion;
transform.localScale = newScaleVector3;

उपरोक्त उदाहरणों में, नामित चर नामों में निर्दिष्ट प्रकार के हैं। यहां कुछ प्रमुख विवरण दिए गए हैं: स्थिति और पैमाना, जैसा कि आप अपेक्षा करते हैं, इस रूप में संग्रहीत हैं वेक्टर3एस . आप एक्सेस कर सकते हैं एक्स , तथा , तथा साथ प्रत्येक के घटक (उदाहरण के लिए, परिवर्तन.स्थिति.y आपको शून्य तल के ऊपर किसी वस्तु की दूरी देता है)।

हालांकि, बचने के लिए जिम्बल लॉक , घुमावों को के रूप में नियंत्रित किया जाता है quaternions (चार-घटक वैक्टर)। चूंकि हाथ से हेरफेर करने वाले चतुर्भुज सहज नहीं हैं, आप यूलेरियन कोणों का उपयोग करके घुमावों में हेरफेर कर सकते हैं क्वाटरनियन। यूलर इस तरह की विधि:

transform.rotation = Quaternion.Euler(pitch, yaw, roll);

यदि आप वस्तुओं को एक स्थान से दूसरे स्थान पर आसानी से ले जाना चाहते हैं, तो आप पाएंगे स्लेरपो quaternions और vector3s सहायक के लिए विधि। स्लर्प तीन तर्कों में लेता है - वर्तमान स्थिति, अंतिम स्थिति और परिवर्तन की गति, और दी गई गति पर उनके बीच आसानी से प्रक्षेपित करता है। वाक्यविन्यास इस तरह दिखता है:

transform.position = Vector3.Slerp(startPositionVector3, newDestinationVector3, 1);

६.२ रेंडरर

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

renderer.enabled = false;
renderer.material.color = new Color(0, 255, 0);
renderer.material.mainTexture = myTexture;
renderer.material.shader = newShader;

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

६.३ भौतिकी

एकता एक एकीकृत भौतिकी इंजन के साथ आती है - कुछ ऐसा जो भौतिकी सैंडबॉक्स गेम सभी उपयोग करते हैं। यह आपको वस्तुओं के भौतिक गुणों को निर्दिष्ट करने और उनके अनुकरण के विवरण को आपके लिए संभालने की अनुमति देता है। सामान्य तौर पर, पाठ्यपुस्तक और परिवर्तन प्रणाली का उपयोग करके अपने स्वयं के भौतिकी को लागू करने की कोशिश करने के बजाय, यूनिटी के भौतिकी इंजन का यथासंभव अधिकतम उपयोग करना सरल और अधिक मजबूत है।

सभी भौतिकी सहारा की आवश्यकता है कोलाइडर . हालाँकि, वास्तविक अनुकरण स्वयं a . द्वारा नियंत्रित किया जाता है सख्त शरीर , जिसे में जोड़ा जा सकता है निरीक्षक दृश्य। रिगिडबॉडीज हो सकते हैं कीनेमेटीक्स का या गैर कीनेमेटिक .

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

इसके अलावा, आप वस्तु के कोणीय खिंचाव को समायोजित कर सकते हैं (इसे स्पिन करने में कितनी ऊर्जा लगती है), इसके द्रव्यमान को बदल सकते हैं, यह निर्धारित कर सकते हैं कि यह गुरुत्वाकर्षण से प्रभावित है या नहीं, और उस पर बल लगा सकते हैं।

उदाहरण:

rigidbody.angularDrag = 0.1f;
rigidbody.mass = 100;
rigidbody.isKinematic = false;
rigidbody.useGravity = true;
rigidbody.AddForce(transform.forward * 100);

ये सभी काफी आत्म-व्याख्यात्मक हैं। यहाँ ध्यान देने वाली बात केवल का उपयोग है ट्रांसफॉर्म.फॉरवर्ड . वेक्टर 3 के सभी तीन घटक हैं ( ।आगे , ।यूपी , तथा ।अधिकार ) उनके साथ जुड़ा हुआ है, जिसे एक्सेस किया जा सकता है और उनके साथ घुमाया जा सकता है ( आगे संपादक में नीले तीर की दिशा है)। NS ट्रांसफॉर्म.फॉरवर्ड कीवर्ड वर्तमान ऑब्जेक्ट के लिए परिमाण 1 के साथ केवल आगे का वेक्टर है। ऑब्जेक्ट पर अधिक बल बनाने के लिए इसे फ्लोट से गुणा किया जा सकता है। आप भी संदर्भित कर सकते हैं ट्रांसफॉर्म.अप तथा ट्रांसफॉर्म.राइट , और उनका उल्टा पाने के लिए उन्हें नकार दें।

६.४ टक्कर

अक्सर, एक गेम बनाते समय, आप चाहते हैं कि टकराव आपके कोड में कुछ परिवर्तन-की-स्थिति में हो, केवल भौतिकी सिमुलेशन से परे। इसके लिए आपको आवश्यकता होगी a टक्कर का पता लगाने की विधि .

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

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

void OnCollisionEnter(Collision other) {
//do things here
}

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

कभी-कभी, वह करना भी उपयोगी हो सकता है जिसे कहा जाता है रे कास्टिंग . रेकास्टिंग में, एक असीम रूप से पतली रेखा (a .) रे ) दुनिया के माध्यम से कुछ मूल से, कुछ वेक्टर के साथ डाला जाता है, और, जब यह कुछ हिट करता है, तो पहली टक्कर की स्थिति और अन्य विवरण वापस कर दिए जाते हैं। रेकास्ट के लिए कोड इस तरह दिखता है:

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

यह वर्तमान वस्तु की स्थिति से -Vector3.up (सीधे नीचे) के साथ एक किरण डालता है, और चर को जोड़ता है मारो पहली वस्तु से टकराती है। एक बार जब आपकी किरण किसी चीज से टकराती है, तो आप पहुंच सकते हैं हिट.डिस्टेंस यह निर्धारित करने के लिए कि यह कितनी दूर है, या हिट।गेमऑब्जेक्ट आपके द्वारा हिट की गई वस्तु में हेरफेर करने के लिए।

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

6.5 समय सुधार

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

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

6.6 ऑडियो स्रोत और श्रोता

अब जब हमने वस्तुओं को बनाने, प्रस्तुत करने और नियंत्रित करने का तरीका कवर कर लिया है, तो आइए उस दूसरे अर्थ के बारे में बात करें जो कंप्यूटर गेम सेवा कर सकता है: अर्थात्, ध्वनि . एकता दो प्रकार की ध्वनियों का समर्थन करती है: 2डी तथा ३डी लगता है। 3D ध्वनियाँ दूरी के आधार पर अपना आयतन बदलती हैं, और कैमरे के सापेक्ष गति करते ही विकृत हो जाती हैं; 2D ध्वनियाँ नहीं हैं।

2D ध्वनियाँ ध्वनि-ओवर और पृष्ठभूमि संगीत के लिए उपयुक्त हैं, और 3D ध्वनियाँ दुनिया में होने वाली घटनाओं द्वारा उत्पन्न ध्वनियों पर लागू होती हैं। यह बदलने के लिए कि ध्वनि 3D है या नहीं, इसे इसमें चुनें परियोजना देखें, स्विच करें निरीक्षक ड्रॉपडाउन मेनू से उपयुक्त विकल्प देखें और चुनें, फिर दबाएं पुन: आयात करें बटन।

वास्तव में ध्वनि चलाने के लिए, आपको एक संलग्न करना होगा ऑडियो स्रोत एक प्रोप के लिए (जिस प्रोप से आप ध्वनि उत्पन्न करना चाहते हैं, एक 3 डी ध्वनि के मामले में)। फिर आपको को खोलना होगा audioclip फ़ील्ड और अपनी ध्वनि फ़ाइल चुनें।

पीसी से एक्सबॉक्स कंट्रोलर को कैसे कनेक्ट करें

आप उपयोग कर सकते हैं myAudioSource.Pause () तथा myAudioSource.Play () उन ध्वनि फ़ाइलों को नियंत्रित करने के लिए। आप ध्वनि के फ़ॉलऑफ़ व्यवहार, वॉल्यूम और डॉप्लर स्थानांतरण को समायोजित कर सकते हैं निरीक्षक ऑडियो स्रोत के लिए टैब।

६.७ इनपुट

एक गेम जो उपयोगकर्ता से कोई इनपुट नहीं लेता है वह एक गेम नहीं है। आप बहुत सारे विभिन्न प्रकार के इनपुट पढ़ सकते हैं, और उनमें से लगभग सभी तक पहुँचा जा सकता है इनपुट तथा कुंजी कोड वस्तुओं। कुछ नमूना इनपुट विवरण (जिनके प्रत्येक फ्रेम का मूल्यांकन मूल्य है) नीचे हैं।

Vector3 mousePos = Input.mousePosition;
bool isLeftClicking = Input.GetMouseButton(0);
bool isPressingSpace = Input.GetKey(KeyCode.Space);

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

6.8 स्क्रिप्ट डीबग करना

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

ये बग आमतौर पर ठीक करने के लिए सबसे कठिन नहीं हैं। सूक्ष्म अर्थ संबंधी त्रुटियां क्या अधिक समस्याग्रस्त हो सकती हैं, जिसमें आपने मान्य C# से भरी फ़ाइल को सफलतापूर्वक लिखा है - बस ऐसा नहीं जो वह करता है जो आपने सोचा था। यदि आपके पास इनमें से कोई एक त्रुटि है, और आपको इसे ट्रैक करने में समस्या हो रही है, तो कुछ चीजें हैं जिन्हें आप स्थिति को सुधारने का प्रयास कर सकते हैं।

पहला खेल के निष्पादन को रोकना है, और कंसोल की जांच करना है। आप पर क्लिक करके खेल को रोक सकते हैं ठहराव संपादक के ऊपरी मध्य भाग में आइकन, और फिर चयन सांत्वना देना नीचे से खिड़की मेनू (या दबाने Ctrl > खिसक जाना > सी ) भले ही कोई त्रुटि न हो, फिर भी चेतावनियां कुछ सुराग देने में मदद कर सकती हैं कि क्या गलत हो रहा है।

यदि यह काम नहीं करता है, तो आप यह सत्यापित करने के लिए आंतरिक चर की स्थिति को प्रिंट करके अपनी स्क्रिप्ट की स्थिति के बारे में कुछ विचार प्राप्त करने का प्रयास कर सकते हैं कि प्रोग्राम वही कर रहा है जो आपको लगता है कि यह कर रहा है। आप उपयोग कर सकते हैं डीबग। लॉग (स्ट्रिंग) एक स्ट्रिंग की सामग्री को कंसोल पर प्रिंट करने के लिए जब प्रोग्राम निष्पादन उस लाइन को हिट करता है। सामान्य तौर पर, यदि आप उन चीजों से पीछे की ओर काम करते हैं जो आपको लगता है कि उन चीजों के माध्यम से हो रहा है जो इसे करना चाहिए, तो अंततः आप उस बिंदु पर पहुंच जाएंगे जहां आपके डिबग प्रिंट वह नहीं करते हैं जो आप उनसे करने की उम्मीद करते हैं। वहीं आपकी त्रुटि है।

7. उदाहरण: स्क्रिप्टिंग पोंग

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

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

बॉलहैंडलर.सीएस

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

PaddleHandler.cs

इसके बाद, हमें दुश्मन एआई की जरूरत है: कुछ ऐसा जो दुश्मन के पैडल को एक निश्चित दर पर गेंद की ओर ट्रैक करेगा। उसके लिए, हम अधिकतम सरलता के लिए Vector3.Slerp का उपयोग करेंगे। हम भी वही कण व्यवहार चाहेंगे जो हम अपने पैडल पर देखते हैं।

शत्रुAI.cs

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

ScoreboardUpdater.cs

उन लिपियों को संलग्न करने और संदर्भों को भरने के साथ, जब हम पोंग का अपना खेल चलाते हैं, तो हम गेमप्ले का अनुभव करते हैं!

आप ऐसा कर सकते हैं मेरा पोंग डेमो डाउनलोड करें , यदि आप वह सब कुछ देखना चाहते हैं जिसे मैंने क्रिया में रेखांकित किया है। यह विंडोज, मैक और लिनक्स सिस्टम पर चलता है।

8. दस्तावेज़ीकरण की खोज / अधिक सीखना

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

यहाँ एक महत्वपूर्ण संसाधन है एकता स्क्रिप्टसंदर्भ . ScriptReference एक खोज योग्य डेटाबेस है, जो C# और Javascript दोनों के लिए उपलब्ध है, जिसमें प्रत्येक यूनिटी कमांड और फीचर की एक सूची है, जिसमें उनके कार्यों का विवरण और सिंटैक्स के संक्षिप्त उदाहरण हैं।

यदि आप एकता के संपादक और इंटरफ़ेस के साथ समस्या कर रहे हैं, या पसंद के मामले में वीडियो ट्यूटोरियल की तरह, तो उच्च-गुणवत्ता की एक लंबी सूची है एकता वीडियो ट्यूटोरियल उपलब्ध। अधिक व्यापक (लेकिन कम व्यापक) एकता के लिए पाठ ट्यूटोरियल CatLikeCoding से भी उपलब्ध हैं।

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

9. अपने गेम का निर्माण / एक स्टैंडअलोन एप्लिकेशन को संकलित करना

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

शुरुआत के लिए, यह जान लें कि आप केवल एक त्रुटि-मुक्त प्रोजेक्ट बना सकते हैं। उस अंत तक, सुनिश्चित करें कि आपके निर्माण के दौरान आपके पास कंसोल खुला है: कुछ त्रुटि स्थितियां हैं जिन्हें गेम संपादक में अनदेखा कर देगा, लेकिन फिर भी एक प्रयास किए गए निर्माण को रोक देगा। यह केवल कंसोल पर त्रुटि संदेशों को डंप करता है, स्क्रीन पर कोई दृश्यमान परिणाम नहीं होता है, जो जांचना भूल जाने पर निराशाजनक हो सकता है। एक बार जब आप अपने गेम को त्रुटि मुक्त संकलित कर लेते हैं, हालांकि, आप चयन कर सकते हैं सेटिंग्स बनाएँ नीचे फ़ाइल मेनू, या दबाएँ Ctrl > खिसक जाना

> बी . यह एक साधारण संवाद लाएगा जो आपको कई प्लेटफार्मों के लिए अपना गेम बनाने की अनुमति देता है।

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

10. समापन नोट्स

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

सबसे महत्वपूर्ण तत्वों को पहले प्राप्त करें: अपने मन में एक विचार रखें न्यूनतम व्यवहार्य उत्पाद , सबसे सरल, सबसे नंगे हड्डियों वाली चीज जिसे आप संभवतः बना सकते हैं और फिर भी महसूस कर सकते हैं कि आपने कुछ सार्थक हासिल किया है। बड़ी महत्वाकांक्षाओं पर आगे बढ़ने से पहले उस न्यूनतम व्यवहार्य परियोजना को प्राप्त करें।

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

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

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

साझा करना साझा करना कलरव ईमेल यह जांचने के 3 तरीके हैं कि कोई ईमेल असली है या नकली

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

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • प्रोग्रामिंग
  • लंबा प्रपत्र
  • लॉन्गफॉर्म गाइड
लेखक के बारे में आंद्रे इन्फेंटे(131 लेख प्रकाशित)

दक्षिण-पश्चिम में स्थित एक लेखक और पत्रकार, आंद्रे को 50 डिग्री सेल्सियस तक कार्यात्मक रहने की गारंटी है, और बारह फीट की गहराई तक जलरोधी है।

Andre Infante . की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें