आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

एक चरित्र नियंत्रक आपके खेल में सरल आंदोलन भौतिकी को लागू करने में आपकी सहायता कर सकता है।

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

चरण 1: प्लेयर और टेरेन ऑब्जेक्ट्स के साथ एक दृश्य बनाएं

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

इलाके के लिए एक 3डी विमान वस्तु

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

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

क्यूब ऑब्जेक्ट प्लेयर मॉडल

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

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

आप पा सकते हैं मुफ्त एकता संपत्ति ऑनलाइन अपने प्रोजेक्ट को विकसित करने के लिए।

एक तीसरे व्यक्ति का कैमरा

आपके दृश्य में पहले से ही एक कैमरा होना चाहिए जिसे आप अपने तीसरे व्यक्ति के कैमरे के रूप में उपयोग कर सकते हैं। कैमरे को इस तरह रखें कि वह आपके घन के ऊपर एक आरामदायक तीसरे व्यक्ति की स्थिति में बैठे। पैरेंट-चाइल्ड संबंध बनाने के लिए कैमरे को क्यूब पर खींचने और छोड़ने से पहले पदानुक्रम फलक पर जाएं। ऐसा हो जाने के बाद कैमरा स्वचालित रूप से आपके घन का अनुसरण करेगा।

एक त्वरित परीक्षण

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

चरण 2: एक सी # फ़ाइल सेट अप करें

अब एक C# फाइल बनाने का समय आ गया है ताकि आप कुछ मूवमेंट की प्रोग्रामिंग शुरू कर सकें। प्रोजेक्ट सेक्शन में जाएं, राइट-क्लिक करें, क्रिएट पर होवर करें और लिस्ट में से फोल्डर चुनें। फोल्डर को नाम दें Scripts या ऐसा ही कुछ।

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

का उपयोग करते हुए प्रणाली। संग्रह;
का उपयोग करते हुए प्रणाली। संग्रह। सामान्य;
का उपयोग करते हुए यूनिटीइंजिन;

जनताकक्षाचरित्र_नियंत्रण: मोनो व्यवहार {
खालीपनशुरू() {
}

खालीपनअद्यतन() {
}
}

चरण 3: वेग के साथ आगे और पीछे की गति बनाने के लिए C# का उपयोग करें

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

जनता कठोर शरीर
जनतातैरना रफ़्तार;

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

खालीपनशुरू() {
रिगिडबॉडी = गेटकंपोनेंट ();
}

अब आप कुछ कोड जोड़ सकते हैं जो आपके प्लेयर मॉडल को आगे बढ़ाएंगे। यह कोड अच्छा और सरल है; आपको बस दो if स्टेटमेंट चाहिए, एक फॉरवर्ड मूवमेंट के लिए, और एक बैकवर्ड मूविंग के लिए। आप इनपुट का उपयोग कर सकते हैं। GetKey यह निर्धारित करने के लिए कि कोई कुंजी कब दबाई जा रही है। इस स्थिति में, आप W और S कुंजियों के प्रेस की तलाश कर रहे हैं।

इनमें से किसी भी कुंजी को दबाने से कठोर पिंड का उपयोग करके घन कठोर पिंड में बल जुड़ जाता है। एडफोर्स। आप गति चर द्वारा इसकी Z-अक्ष स्थिति (transform.forward) को गुणा करके अतिरिक्त बल की दिशा और गति की गणना कर सकते हैं। बैकवर्ड मोशन के लिए आपके उपयोग के लिए कोई ट्रांसफ़ॉर्म.बैकवर्ड क्लास नहीं है, लेकिन यह ट्रांसफ़ॉर्म.फ़ॉरवर्ड को -1 से गुणा करके प्राप्त किया जा सकता है।

अगर (इनपुट। चाबी देना("डब्ल्यू")) {
सख्त शरीर। एडफोर्स (ट्रांसफॉर्म.फॉरवर्ड * स्पीड);
}

अगर (इनपुट। चाबी देना("एस")) {
सख्त शरीर। ऐडफोर्स((ट्रांसफॉर्म.फॉरवर्ड * -1) * रफ़्तार);
}

C # फ़ाइल सहेजें और एकता पर वापस जाएँ। प्रोजेक्ट फलक के अंदर स्क्रिप्ट ढूंढें और उस ऑब्जेक्ट को स्क्रिप्ट असाइन करने के लिए पदानुक्रम के अंदर चरित्र मॉडल क्यूब पर खींचें और छोड़ें। जब आप क्यूब का चयन करते हैं तो आपको इंस्पेक्टर फलक में स्क्रिप्ट को एक घटक के रूप में देखना चाहिए। रिजिडबॉडी वेरिएबल बॉक्स के अंदर क्लिक करें और अपने क्यूब के रिगिडबॉडी का चयन करें।

अब आप गेम लॉन्च करने और अपने कोड का परीक्षण करने के लिए प्ले बटन का उपयोग कर सकते हैं। पर रुको! वहाँ एक समस्या; आपका क्यूब सीधे आगे बढ़ने के बजाय लुढ़कने वाला है। क्यूब के इंस्पेक्टर के पास वापस जाएं, रिगिडबॉडी कंपोनेंट ढूंढें, और गेम को फिर से लॉन्च करने से पहले X और Z अक्ष पर फ्रीज रोटेशन के लिए बॉक्स को टिक करें। अब यह काम करना चाहिए।

चरण 4: टॉर्क के साथ लेफ्ट और राइट टर्निंग बनाने के लिए C# का उपयोग करें

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

जनतातैरना टोक़;

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

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

अगर (इनपुट। चाबी देना("डी")) {
तैरना टर्न = इनपुट। गेटएक्सिस("क्षैतिज");
सख्त शरीर। AddTorque (ट्रांसफॉर्म.अप * टॉर्क * टर्न);
}

अगर (इनपुट। चाबी देना("ए")) {
तैरना टर्न = इनपुट। गेटएक्सिस("क्षैतिज");
सख्त शरीर। AddTorque (ट्रांसफॉर्म.अप * टॉर्क * टर्न);
}

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

चरण 5: प्रोग्राम जंपिंग के लिए C# का उपयोग करें

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

निजीबूल कूद रहा है = असत्य;

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

अगर (! कूद रहा है) {
}

दूसरे मूवमेंट if स्टेटमेंट्स में समान स्थिति जोड़ना खिलाड़ी को कूदने के दौरान हिलने से रोकेगा।

अगर (इनपुट। चाबी देना("डब्ल्यू") &&! कूद रहा है) {
सख्त शरीर। एडफोर्स (ट्रांसफॉर्म.फॉरवर्ड * स्पीड);
}

इस जंपिंग इफ स्टेटमेंट के भीतर, आपको एक और इफ स्टेटमेंट की जरूरत है, इस बार जंप बटन के कीप्रेस की जांच करने के लिए। isJumping वेरिएबल को ट्रू पर सेट करना इस if स्टेटमेंट में सबसे पहले किया जाने वाला काम है, इसके बाद क्यूब पर वर्तमान में लागू बलों को हटाने के लिए एकrigidbody.angularVelocity डिक्लेरेशन बनाया जाता है।

अब आप कठोर शरीर का उपयोग कर सकते हैं। AddForce घोषणा घन को उसके Z अक्ष पर बल जोड़ने के लिए, एक छलांग के ऊपर की ओर गति का निर्माण करती है। अंत में, 0.8 सेकंड के बाद एक अलग फ़ंक्शन को कॉल करने के लिए इनवोक घोषणा का उपयोग करने का समय आ गया है।

अगर (! कूद रहा है) {
अगर (इनपुट। गेटकीडाउन("अंतरिक्ष")) {
कूद रहा है = सत्य;
सख्त शरीर। AddForce (रूपांतरण * गति * 120);
rigidbody.angularVelocity = वेक्टर3.शून्य;
आह्वान("मूव_सेटर", 0.8 एफ);
}
}

यह फ़ंक्शन isJumping चर को वापस गलत पर सेट करता है ताकि एक बार फिर से गति/कूदना संभव हो, और 0.8 सेकंड की देरी इसे बहुत जल्दी ट्रिगर होने से रोकती है।

खालीपनमूव_सेटर() {
कूद रहा है = असत्य;
}

चरण 6: अपने चरित्र नियंत्रक कोड का परीक्षण करें

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

एकता चरित्र नियंत्रक बनाना

एकता में एक चरित्र नियंत्रक बनाते समय आप कई अलग-अलग दृष्टिकोणों में से चुन सकते हैं। भौतिकी का उपयोग करना एक विकल्प है, लेकिन यदि आप चाहें तो अंतर्निहित चरित्र नियंत्रक प्रणाली का भी उपयोग कर सकते हैं।

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