बच्चों के लिए एंटीपीयरेटिक्स एक बाल रोग विशेषज्ञ द्वारा निर्धारित किया जाता है। लेकिन बुखार के लिए आपातकालीन स्थितियाँ होती हैं जब बच्चे को तुरंत दवा देने की आवश्यकता होती है। तब माता-पिता जिम्मेदारी लेते हैं और ज्वरनाशक दवाओं का उपयोग करते हैं। शिशुओं को क्या देने की अनुमति है? आप बड़े बच्चों में तापमान कैसे कम कर सकते हैं? कौन सी दवाएं सबसे सुरक्षित हैं?
एकता- बड़ी क्षमता वाला बहुत शक्तिशाली, प्रगतिशील इंजन। इसमें पहले से ही बहुत सारे अंतर्निहित कार्य हैं (भौतिकी इंजन सहित) एनवीडिया फिजिक्स), जिसे हम, उपयोगकर्ता, मैन्युअल रूप से पंजीकृत करने की आवश्यकता नहीं है। :)
इस संक्षिप्त लेख में, मैं इंजन की भौतिक क्षमताओं पर चर्चा करना चाहूंगा। तो, चलिए शुरू करते हैं:
कठोर शरीर
यह क्या है?
समारोह के पीछे कठोर शरीरबिल्कुल कठोर शरीर छिपाना ( एटीटी) यदि आप इसे मोटे तौर पर और स्पष्ट रूप से समझाते हैं, तो एटीटीभौतिकी और यांत्रिकी में, यह एक आदर्श कठोर पिंड है, जो बल के प्रभाव में, अपने गुणों को नहीं बदल सकता है, लेकिन (इसके प्रभाव में) 3 आयामों (नीचे, ऊपर, आगे, आदि) में जा सकता है, अर्थात हमारे XYZ कुल्हाड़ियों में ), साथ ही 3 आयामों में घुमाएं (फिर से, X-Y-Z अक्षों के साथ)।
पर एकता, अन्य गेम इंजनों की तरह (फिर से, मैं उन्हें मोटे तौर पर "गेम" इंजन कहता हूं), कठोर शरीरविभिन्न वस्तुओं के लिए उपयोग किया जाता है जिन्हें हम धक्का देकर, लात मारकर आदि के साथ बातचीत कर सकते हैं। हमारे प्रभाव में ऐसी वस्तुएं गुरुत्वाकर्षण के प्रभाव में अन्य वस्तुओं के साथ लुढ़कना, हिलना और टकराती रहेंगी।
इस फ़ंक्शन के लिए हमें कौन सा एप्लिकेशन मिल सकता है?
उदाहरण के लिए, कार बनाने के अलावा कठोर शरीरज़रुरत है 4 व्हील कोलाइडर"और और कोड (लिखी हुई कहानी) , जो दबाए गए चाबियों के आधार पर पहियों पर बल लागू करता है।
विन्यास योग्य विशेषताएं
- द्रव्यमान- हमारी वस्तु का द्रव्यमान किलोग्राम में. यह अनुशंसा की जाती है कि बड़े पैमाने पर मूल्यों को दूसरे के द्रव्यमान से 100 गुना अधिक या कम सेट न करें एटीटी.
- खींचें- बलों के प्रभाव में चलने पर शरीर कितना वायु प्रतिरोध के अधीन होता है। एक मूल्य के साथ 0 कोई प्रतिरोध नहीं है, और एक अनंत मूल्य तुरंत हमारी वस्तु को रोक देगा।
- कोणीय खींच- बलों के प्रभाव में घूमने पर शरीर वायु प्रतिरोध के अधीन कितना होता है। एक मूल्य के साथ 0 कोई प्रतिरोध नहीं है, और एक अनंत मूल्य तुरंत हमारी वस्तु के घूर्णन को रोक देगा।
- गुरुत्वाकर्षण- चालू होने पर वस्तु गुरुत्वाकर्षण से प्रभावित हो जाती है।
- काइनेमेटिक है- सक्षम होने पर, वस्तु भौतिकी इंजन से अप्रभावित हो जाती है और इसे केवल इसके कार्य द्वारा संशोधित किया जा सकता है परिवर्तन. यह चलती प्लेटफॉर्म बनाने के लिए उपयोगी हो सकता है, उदाहरण के लिए।
- बैठाना- केवल तभी लागू होता है जब आपके एटीटी की हरकतें आपको अजीब या अनाड़ी लगती हैं, आदि:
- कोई भी नहीं:इंटरपोलेशन लागू नहीं
- प्रक्षेप:पिछले फ्रेम के परिवर्तन की तुलना में ( चौखटा) , अगला चिकना हो जाएगा।
- एक्सट्रपोलेट:अगले फ्रेम के अनुमानित (अनुमानित) परिवर्तन की तुलना में वर्तमान फ्रेम के परिवर्तन को सुचारू किया जाता है।
- फ्रीज रोटेशन- स्क्रिप्टेड और टकराव दोनों, किसी भी रोटेशन को अक्षम करता है। हालाँकि, रोटेशन फ़ंक्शन द्वारा किया जा सकता है परिवर्तन। घुमाएँ ()
- टक्कर की पहचान हुई है- तेजी से चलने वाली वस्तुओं को बिना खोजे अन्य वस्तुओं से गुजरने से रोकने के लिए उपयोग किया जाता है टक्कर"ओव" (वस्तुओं पर एक विशेष "ग्रिड" जो वे एक दूसरे के साथ और खिलाड़ी के साथ टकराते हैं)।
- असतत:हमारी वस्तु के लिए अन्य सभी वस्तुओं को "नोटिस" करने के लिए डिफ़ॉल्ट मान जिससे वह टकरा सकता है।
- निरंतर:प्रयोग करना असतत टक्करगतिशील टक्कर वस्तुओं के साथ (जो है एटीटी), एक निरंतर टक्करस्थिर के लिए मेशकोलाइडर"ओव (बिना .) एटीटी) तरीका सतत गतिशीलउपयोग निरंतर टक्करएक विशिष्ट के लिए एटीटी. विश्राम एटीटीमोड का उपयोग करेंगे अलग. (यह भौतिकी इंजन के भार को बहुत प्रभावित करेगा, बस छोड़ दें अलग, अगर तेज वस्तुओं के टकराने में कोई समस्या नहीं है)
- निरंतर गतिशील:मोड में वस्तुओं के लिए प्रयुक्त निरंतरया सतत गतिशील टकराव. निरंतर टक्करस्थैतिक के लिए भी इस्तेमाल किया जाएगा मेशकोलाइडर"ओव (बिना .) एटीटी) अन्य सभी के लिए, मोड का उपयोग किया जाता है अलग. तेजी से चलने वाली वस्तुओं के लिए उपयोग किया जाता है।
हम इस सुविधा का उपयोग कैसे कर सकते हैं?
बुनियादी ज्ञान।
काम में लाना एटीटी, हमें पहले से बनाई गई गेम ऑब्जेक्ट की आवश्यकता है ( गेमऑब्जेक्ट), उस पर क्लिक करके, हम निम्न पथ के साथ मेनू पर जाते हैं: अवयव - भौतिकी - कठोर शरीर
. सभी, एटीटीजोड़ा गया! :)
अब वस्तु गुरुत्वाकर्षण के अधीन है, आप स्क्रिप्ट का उपयोग करके उस पर बल लगा सकते हैं, लेकिन वस्तु के लिए ठीक वैसा ही व्यवहार करने के लिए जैसा आपको चाहिए, आपको जोड़ना चाहिए कोलाइडरया संयुक्त.
कोड दुनिया पर राज करता है।
स्क्रिप्ट में, अब हम फ़ंक्शन का उपयोग करके अपनी वस्तु में हेरफेर करेंगे अतिरिक्त बल ()तथा एडटॉर्क ()
.
जब से मैं में हूँ एकतालागू जावास्क्रिप्ट, मेरे उदाहरण इसके साथ होंगे, अन्य स्क्रिप्टिंग उदाहरणों के लिंक (at .) सी#या बू) आप नीचे पैराग्राफ में पाएंगे एटीटी . पर अतिरिक्त जानकारी.
» Rigidbody.AddForce
// Rigidbody.AddForce 2 प्रकार के फ़ार्मुलों का उपयोग करता है, जैसे अंतरिक्ष में आंदोलनों से संबंधित कई अन्य कार्य। // 1 प्रकार: फ़ंक्शन AddForce (बल: वेक्टर 3, मोड: ForceMode = ForceMode.Force): शून्य // वह बल जो वैश्विक समन्वय प्रणाली के सापेक्ष वस्तु को ऊपर धकेलता है। फंक्शन FixedUpdate () (rigidbody.AddForce (Vector3.up * 10); ) // वेक्टर3 का उपयोग करना, एक अंतर्निहित एकता फ़ंक्शन जो मूल रूप से मानक समन्वय प्रणाली के समान है। // दूसरा प्रकार: फ़ंक्शन AddForce (x: फ्लोट, y: फ्लोट, z: फ्लोट, मोड: ForceMode = ForceMode.Force): शून्य // समान, लेकिन यहां उपयोग किया जाता है एक्स-वाई-जेड सिस्टमनिर्देशांक। फ़ंक्शन फिक्स्डअपडेट () (रिडबॉडी। एडफोर्स (0, 10, 0)); )
» Rigidbody.AddTorque
// फ़ंक्शन ऑब्जेक्ट को दिए गए अक्ष के चारों ओर घुमाता है। // 1 प्रकार: फ़ंक्शन AddTorque (टोक़: वेक्टर 3, मोड: ForceMode = ForceMode.Force): शून्य // वैश्विक Y अक्ष के चारों ओर ATT को घुमाता है। फ़ंक्शन FixedUpdate () (rigidbody.AddTorque (Vector3.up * 10); ) // टाइप 2: फंक्शन एडटॉर्क (एक्स: फ्लोट, वाई: फ्लोट, जेड: फ्लोट, मोड: फोर्समोड = फोर्समोड। फोर्स): शून्य // वही काम करता है, लेकिन फिर से एक अलग माप प्रणाली में। फ़ंक्शन फिक्स्डअपडेट () (रिडबॉडी। एडटॉर्क (0, 10, 0)); )
एटीटी वस्तुओं के साथ बातचीत करता है।
हमारे के सही संचालन के लिए एटीटीउन्हें आपूर्ति करने की आवश्यकता है कोलाइडर"अमी (या) टक्कर"अमी, जैसा आप कृपया ^।^)।
नीचे कोलाइडर के बारे में और पढ़ें।
आकर महत्त्व रखता है!
अपनी वस्तु के आयामों का निरीक्षण करें, क्योंकि वे द्रव्यमान से भी अधिक महत्वपूर्ण हैं एटीटी. यदि आपकी वस्तु गलत गति से चल रही है, हवा में तैर रही है, या टकरा नहीं रही है, तो उसके परिमाण को समायोजित करने का प्रयास करें (नहीं एटीटी, लेकिन वस्तु ही)। 3D संपादक से मॉडल आयात करते समय, इसके आयाम संरक्षित रहते हैं, इसलिए मॉडलिंग चरण के दौरान सावधान रहें और सभी मॉडलों के आयामों का सम्मान करें।
एटीटी . पर अतिरिक्त जानकारी
इस पर वर्णन करें एटीटीया कठोर शरीरमैं शायद खत्म कर दूंगा। हालांकि, कुछ सुझाव हैं, खासकर उन लोगों के लिए जिन्होंने इसे अब तक पढ़ा है :)
- मानक घन आकार एकताबराबरी 1 मीटरइसलिए, इसका उपयोग करके अपने मॉडलों के आकार की जांच करना बहुत सुविधाजनक है। क्यूब बनाने के लिए, मेनू से चयन करें गेमऑब्जेक्ट - अन्य बनाएं - क्यूब
- सापेक्ष संकेतक द्रव्यमानपरिभाषित करता है कि दो वस्तुएं एक दूसरे के साथ कैसे बातचीत करेंगी।
- द्रव्यमानऊंचाई से गिरने की गति को प्रभावित नहीं करता है, इन उद्देश्यों के लिए उपयोग करें खींचें.
- मान जितना अधिक होगा खींचेंवस्तु का भार उतना ही अधिक होता है। मानक मान भिन्न होते हैं 0.001 . से(धातु का ठोस टुकड़ा) 10 . तक(पंख)।
- यदि आपको किसी वस्तु को स्क्रिप्ट और भौतिकी दोनों के साथ संशोधित करने की आवश्यकता है, तो उसमें जोड़ें एटीटीपैरामीटर के साथ कीनेमेटीक्स का.
कोलाइडर
यह क्या है?
पिछले भाग में, हमने चर्चा की थी कि कैसे कठोर शरीरऔर तथाकथित का उल्लेख किया कोलाइडर. कोलाइडरहमारे लिए - एक साधारण आदिम के ग्रिड के रूप में एक सहायक वस्तु या, इसके विपरीत, एक जटिल आकार, जो हमारे मॉडल या मॉडल के हिस्से के आसपास स्थित है और अन्य वस्तुओं के साथ बातचीत करता है यदि वे भी कोलाइडर से घिरे हुए हैं।
*Warcraft 3* विश्व संपादक के विशेषज्ञों को स्पष्ट रूप से समझाने के लिए, हमारे द्वारा आयात किए गए मॉडल की कल्पना करें, जिसके लिए हमने डूडाड संपादक में पथ बनावट निर्दिष्ट नहीं की थी - यह हमारा उद्देश्य होगा; और यहां कोलाइडर की भूमिका मॉडल के चारों ओर पथ के अवरोधकों द्वारा निभाई जाएगी। स्वाभाविक रूप से, यह एक अपेक्षाकृत कठिन तुलना है, क्योंकि में एकतावे बहुत अधिक कार्यात्मक हैं। खैर, आइए करीब से देखें।
कोलाइडर के प्रकार।
मेनू के माध्यम से कोलाइडर जोड़े जाते हैं घटक - भौतिकी . कई प्रकार हैं:
- बॉक्स कोलाइडर- एक घन के रूप में।
- क्षेत्र कोलाइडर- एक गोले के रूप में।
- कैप्सूल कोलाइडर- कैप्सूल के रूप में।
- मेष कोलाइडर- ऑब्जेक्ट ग्रिड के आकार के अनुसार स्वचालित रूप से एक कोलाइडर बनाता है, उसी प्रकार के अन्य कोलाइडर से नहीं टकरा सकता। मुख्य रूप से स्थिर वस्तुओं के लिए उपयोग किया जाता है, जैसे कि रेस ट्रैक का वातावरण।
- व्हील कोलाइडर- पहियों के लिए प्रयुक्त, एक बहुत ही उपयोगी वस्तु।
- कंपाउंड कोलाइडर- आदिम के संयोजन जो एक साथ एक के रूप में कार्य करते हैं। इस तरह के एक जटिल कोलाइडर को बनाने के लिए, आपको हमारे बेस कोलाइडर में चाइल्ड ऑब्जेक्ट्स को जोड़ना होगा, और पहले से ही उन्हें आदिम द्वारा बांधना होगा। इस प्रकार, उदाहरण के लिए, कारों के लिए साधारण कोलाइडर बहुत आसानी से बनाए जाते हैं।
विन्यास योग्य विशेषताएं
सिद्धांत रूप में, सभी कोलाइडर एक दूसरे के समान होते हैं, उनका उपयोग केवल विभिन्न आकृतियों की वस्तुओं के लिए किया जाता है, हालांकि, उनके कई अलग-अलग पैरामीटर होते हैं।
- घनक्षेत्र
- सामग्री- दिखाता है कि धातु, बर्फ, आदि जैसे भौतिक सामग्री को निर्दिष्ट करते समय कोलाइडर अन्य वस्तुओं के साथ कैसे संपर्क करता है।
- ट्रिगर है- यदि पैरामीटर सक्षम है, तो वस्तु स्क्रिप्ट से प्रभावित होती है, भौतिकी से नहीं।
- आकार- XYZ कुल्हाड़ियों के साथ कोलाइडर का आकार।
- केंद्र- वस्तु के स्थानीय निर्देशांक के सापेक्ष कोलाइडर की स्थिति।
- वृत्त
- RADIUS- गोले की त्रिज्या, पैरामीटर को बदल देती है आकार.
- शेष पैरामीटर अपरिवर्तित हैं।
- कैप्सूल(पैरामीटर आकार बदलते हैं)
- RADIUS- कैप्सूल की मोटाई।
- कद- कोलाइडर के बेलनाकार भाग की ऊंचाई (गोल आधारों के बिना)।
- दिशा- वस्तु के स्थानीय निर्देशांक के सापेक्ष कोलाइडर की दिशा।
- मेष कोलाइडर(पैरामीटर आकार बदलते हैं)
- जाल- कोलाइडर बनाने के लिए वांछित जाल का चयन करना।
- चिकना क्षेत्र टकराव - इस फ़ंक्शन को सक्षम करने से कोलाइडर की सतह चिकनी हो जाती है। इसका उपयोग चिकनी सतहों पर किया जाना चाहिए, उदाहरण के लिए, बहुत अधिक कोणीयता के बिना ढलान वाला इलाका, जिस पर गोले लुढ़कने चाहिए।
- उत्तल- सक्षम होने पर, हमारे कोलाइडर को अन्य कोलाइडर से टकराने की अनुमति देता है। उत्तल जाल कोलाइडरतक सीमित है 255 त्रिकोण.
- व्हील कोलाइडर(पैरामीटर आकार बदलते हैं)
- RADIUS- पहिया त्रिज्या।
- निलंबन दूरी- व्हील सस्पेंशन को बढ़ाने के लिए अधिकतम दूरी। निलंबन हमेशा स्थानीय अक्ष से नीचे की ओर बढ़ता है यू.
- सस्पेंशन स्प्रिंग- निलंबन विभिन्न बलों का उपयोग करके निर्दिष्ट बिंदु तक पहुंचने का प्रयास करता है।
- स्प्रिंग: // निर्दिष्ट बिंदु (स्थिति) तक पहुंचने का प्रयास। सेटिंग जितनी ऊंची होगी, उतनी ही तेजी से पहुंचा जा सकेगा।
- डम्पर: // नरम करता है, निलंबन की गति को धीमा कर देता है। मूल्य जितना अधिक होता है, उतना ही धीमा स्पंज चलता है।
- लक्ष्य स्थिति: // पूर्ण "पथ" जो निलंबन "यात्रा" कर सकता है। 0 मतलब पूरी तरह से विस्तारित शॉक एब्जॉर्बर, और 1 - पूरी तरह से संकुचित। डिफ़ॉल्ट मान 0 है, जो सामान्य कार निलंबन से मेल खाता है।
- द्रव्यमान- पहिया का द्रव्यमान।
- आगे/बग़ल में घर्षण - पहिया के साधारण रोलिंग के लिए और बग़ल में रोलिंग के लिए घर्षण पैरामीटर (यह स्किड्स या ड्रिफ्टिंग में होता है)।
मुझे पसंद है +15 - 0
*एकता* एक बहुत शक्तिशाली, प्रगतिशील इंजन है जिसमें काफी संभावनाएं हैं। इसमें कई अंतर्निहित कार्य हैं (*NvidiaPhysX* भौतिकी इंजन सहित) कि हम, उपयोगकर्ताओं को, मैन्युअल रूप से निर्धारित करने की आवश्यकता नहीं है। :)
इस संक्षिप्त लेख में, मैं इंजन की भौतिक क्षमताओं पर चर्चा करना चाहूंगा। तो, चलिए शुरू करते हैं:
कठोर शरीर
=
= यह क्या है? =
*रिजिडबॉडी* फंक्शन के पीछे एक बिल्कुल रिजिड बॉडी (*एटीटी*) है। मोटे तौर पर और स्पष्ट रूप से समझाने के लिए, भौतिकी और यांत्रिकी में *एटीटी* एक आदर्श कठोर शरीर है, जो एक बल के प्रभाव में अपने गुणों को नहीं बदल सकता है, लेकिन (इसके प्रभाव में) 3 आयामों (नीचे, ऊपर, आगे) में घूम सकता है। आदि)।
*यूनिटी* में, साथ ही अन्य गेम इंजनों में (फिर से, मैं उन्हें मोटे तौर पर "गेम" इंजन कहता हूं), *रिगिडबॉडी* का उपयोग विभिन्न वस्तुओं के लिए किया जाता है, जिन्हें हम धक्का देकर, लात मारकर, आदि के साथ बातचीत कर सकते हैं। हमारे प्रभाव में ऐसी वस्तुएं गुरुत्वाकर्षण के प्रभाव में अन्य वस्तुओं के साथ लुढ़कना, हिलना और टकराती रहेंगी।
इस फ़ंक्शन के लिए हमें कौन सा एप्लिकेशन मिल सकता है? =
उदाहरण के लिए, कार बनाने के लिए, *रिगिडबॉडी* के अलावा हमें चाहिए 4 व्हील कोलाइडर"ए और *कोड* (*स्क्रिप्ट*) जो पहियों पर बल लगाता है, जो कि दबाए गए चाबियों पर निर्भर करता है।
- *द्रव्यमान* - हमारी वस्तु का द्रव्यमान किलोग्राम में. यह अनुशंसा की जाती है कि अन्य *एटीटी* के द्रव्यमान से 100 गुना अधिक या कम द्रव्यमान मान सेट न करें।
- *खींचें* - बलों के प्रभाव में चलने पर शरीर वायु प्रतिरोध के अधीन कितना होता है। *0* के मान के साथ कोई प्रतिरोध नहीं है, और एक अनंत मान हमारी वस्तु को तुरंत रोक देगा।
- कोणीय खींच- बलों के प्रभाव में घूमने पर शरीर वायु प्रतिरोध के अधीन कितना होता है। *0* के मान के साथ कोई प्रतिरोध नहीं है, और एक अनंत मान हमारी वस्तु के घूर्णन को तुरंत रोक देगा।
- गुरुत्वाकर्षण- चालू होने पर वस्तु गुरुत्वाकर्षण से प्रभावित हो जाती है।
- काइनेमेटिक है- सक्षम होने पर, वस्तु भौतिकी इंजन से अप्रभावित हो जाती है और इसे केवल इसके *रूपांतरण* फ़ंक्शन द्वारा संशोधित किया जा सकता है। यह चलती प्लेटफॉर्म बनाने के लिए उपयोगी हो सकता है, उदाहरण के लिए।
- *इंटरपोलेट* - केवल तभी लागू होता है जब आपकी एटीटी हरकतें आपको अजीब या अनाड़ी लगती हैं, आदि:
- कोई भी नहीं:इंटरपोलेशन लागू नहीं
- प्रक्षेप:पिछले फ्रेम (* फ्रेम *) के परिवर्तन की तुलना में, अगले को चिकना किया जाएगा।
- एक्सट्रपोलेट:अगले फ्रेम के अनुमानित (अनुमानित) परिवर्तन की तुलना में वर्तमान फ्रेम के परिवर्तन को सुचारू किया जाता है।
- फ्रीज रोटेशन- स्क्रिप्टेड और टकराव दोनों, किसी भी रोटेशन को अक्षम करता है। हालाँकि, फ़ंक्शन द्वारा रोटेशन किया जा सकता है // परिवर्तन। घुमाएँ ()
- टक्कर की पहचान हुई है- तेजी से चलने वाली वस्तुओं को बिना खोजे अन्य वस्तुओं से गुजरने से रोकने के लिए उपयोग किया जाता है टक्कर"ओव" (वस्तुओं पर एक विशेष "ग्रिड" जो वे एक दूसरे के साथ और खिलाड़ी के साथ टकराते हैं)।
- असतत:हमारी वस्तु के लिए अन्य सभी वस्तुओं को "नोटिस" करने के लिए डिफ़ॉल्ट मान जिससे वह टकरा सकता है।
- निरंतर:प्रयोग करना असतत टक्करगतिशील टक्कर वस्तुओं के साथ (जिसमें *एटीटी* है), और निरंतर टक्करस्थिर के लिए मेशकोलाइडर"एस (बिना * एटीटी *)। मोड सतत गतिशीलउपयोग निरंतर टक्करएक विशिष्ट *एटीटी* के लिए। शेष *एटीटी* _Discrete_ मोड का उपयोग करेगा। (यह भौतिकी इंजन के भार को बहुत प्रभावित करेगा, बस _Discrete_ छोड़ दें यदि तेज वस्तुओं के टकराने में कोई समस्या नहीं है)
- निरंतर गतिशील: _Continuous_ मोड या . में ऑब्जेक्ट के लिए उपयोग किया जाता है सतत गतिशील टकराव. निरंतर टक्करस्थैतिक के लिए भी इस्तेमाल किया जाएगा मेशकोलाइडर"s (बिना * ATT *)। अन्य सभी के लिए, _Discrete_ मोड का उपयोग किया जाता है। तेजी से चलती वस्तुओं के लिए उपयोग किया जाता है।
हम इस सुविधा का उपयोग कैसे कर सकते हैं? =
= बुनियादी ज्ञान।
*ATT* का उपयोग करने के लिए, हमें पहले से बनाई गई गेम ऑब्जेक्ट (*GameObject*) की आवश्यकता है, उस पर क्लिक करके, हम निम्न पथ के साथ मेनू पर जाते हैं: अवयव - भौतिकी - कठोर शरीर
. बस, *एटीटी* जोड़ा गया! :)
अब वस्तु गुरुत्वाकर्षण के अधीन है, आप लिपियों का उपयोग करके उस पर बल लगा सकते हैं, लेकिन वस्तु को ठीक वैसा ही व्यवहार करने के लिए जैसा आपको चाहिए, आपको *Collider* या *joint* जोड़ना चाहिए।
कोड दुनिया पर राज करता है।
स्क्रिप्ट में, अब हम फ़ंक्शन का उपयोग करके अपनी वस्तु में हेरफेर करेंगे अतिरिक्त बल ()तथा एडटॉर्क ()
.
चूंकि मैं *जावास्क्रिप्ट* का उपयोग *यूनिटी* में करता हूं, मेरे उदाहरण इसके साथ होंगे, अन्य स्क्रिप्टिंग उदाहरणों के लिंक (पर) सी#या *बू*) आप नीचे पैराग्राफ में पाएंगे एटीटी . पर अतिरिक्त जानकारी.
Rigidbody.AddForce
// Rigidbody.AddForce 2 प्रकार के फ़ार्मुलों का उपयोग करता है, जैसे अंतरिक्ष में आंदोलनों से संबंधित कई अन्य कार्य। // 1 प्रकार: फ़ंक्शन AddForce (बल: वेक्टर 3, मोड: ForceMode = ForceMode.Force): शून्य // वह बल जो वैश्विक समन्वय प्रणाली के सापेक्ष वस्तु को ऊपर धकेलता है। फंक्शन FixedUpdate () (rigidbody.AddForce (Vector3.up * 10); ) // वेक्टर3 का उपयोग करना, एक अंतर्निहित एकता फ़ंक्शन जो मूल रूप से मानक समन्वय प्रणाली के समान है। // दूसरा प्रकार: फ़ंक्शन AddForce (x: फ्लोट, y: फ्लोट, z: फ्लोट, मोड: ForceMode = ForceMode.Force): शून्य // वही बात, लेकिन यह XYZ समन्वय प्रणाली का उपयोग करता है। फ़ंक्शन फिक्स्डअपडेट () (रिडबॉडी। एडफोर्स (0, 10, 0)); )
Rigidbody.AddTorque
// फ़ंक्शन ऑब्जेक्ट को दिए गए अक्ष के चारों ओर घुमाता है। // 1 प्रकार: फ़ंक्शन AddTorque (टोक़: वेक्टर 3, मोड: ForceMode = ForceMode.Force): शून्य // वैश्विक Y अक्ष के चारों ओर ATT को घुमाता है। फ़ंक्शन FixedUpdate () (rigidbody.AddTorque (Vector3.up * 10); ) // टाइप 2: फंक्शन एडटॉर्क (एक्स: फ्लोट, वाई: फ्लोट, जेड: फ्लोट, मोड: फोर्समोड = फोर्समोड। फोर्स): शून्य // वही काम करता है, लेकिन फिर से एक अलग माप प्रणाली में। फ़ंक्शन फिक्स्डअपडेट () (रिडबॉडी। एडटॉर्क (0, 10, 0)); )
एटीटी वस्तुओं के साथ बातचीत करता है।
हमारे *एटीटी* के सही संचालन के लिए उन्हें आपूर्ति करने की आवश्यकता है कोलाइडर"अमी (या) टक्कर"अमी, जैसा आप कृपया ^।^)।
नीचे कोलाइडर के बारे में और पढ़ें।
आकर महत्त्व रखता है!
अपनी वस्तु के आयामों का निरीक्षण करें, क्योंकि वे *एटीटी* द्रव्यमान से भी अधिक महत्वपूर्ण हैं। यदि आपकी वस्तु गलत गति से चल रही है, हवा में लटक रही है या टकरा नहीं रही है, तो इसके परिमाण को समायोजित करने का प्रयास करें (*एटीटी* नहीं, बल्कि वस्तु स्वयं)। 3D संपादक से मॉडल आयात करते समय, इसके आयाम संरक्षित रहते हैं, इसलिए मॉडलिंग चरण के दौरान सावधान रहें और सभी मॉडलों के आयामों का सम्मान करें।
एटीटी पर अतिरिक्त जानकारी =
इस पर *एटीटी* या *रिगिडबॉडी* का वर्णन करते हुए, शायद, मैं समाप्त कर दूं। हालांकि, कुछ सुझाव हैं, खासकर उन लोगों के लिए जिन्होंने इसे अब तक पढ़ा है :)
- *एकता* में मानक घन आकार है 1 मीटरइसलिए, इसका उपयोग करके अपने मॉडलों के आकार की जांच करना बहुत सुविधाजनक है। क्यूब बनाने के लिए, मेनू से चयन करें गेमऑब्जेक्ट - अन्य बनाएं - क्यूब
- *मास* सापेक्ष घातांक यह निर्धारित करता है कि दो वस्तुएँ एक दूसरे के साथ कैसे परस्पर क्रिया करेंगी।
- *द्रव्यमान* ऊंचाई से गिरने की गति को प्रभावित नहीं करता, इस उद्देश्य के लिए *खींचें* का प्रयोग करें।
- *खींचें* मान जितना अधिक होगा, आइटम का वज़न उतना ही अधिक होगा। मानक मान भिन्न होते हैं 0.001 . से(धातु का ठोस टुकड़ा) 10 . तक(पंख)।
- यदि आपको स्क्रिप्ट का उपयोग करके और भौतिकी का उपयोग करके किसी वस्तु को बदलने की आवश्यकता है, तो इसमें *ATT* को *Kinematic* पैरामीटर के साथ जोड़ें।
आप निम्न लिंक पर *एटीटी* फ़ंक्शन के साथ किसी वस्तु पर बाहरी ताकतों के प्रभाव के लिखित उदाहरण देख सकते हैं:
*बल जोड़ें*
*ऐडटॉर्क*
कोलाइडर
=
= यह क्या है? =
पिछले खंड में, हमने देखा कि कैसे *रिगिडबॉडी* काम करता है और तथाकथित *कोलाइडर* का उल्लेख किया है। * कोलाइडर * हमारे लिए एक साधारण आदिम के ग्रिड के रूप में एक सहायक वस्तु है या, इसके विपरीत, एक जटिल आकार, जो हमारे मॉडल या मॉडल के हिस्से के आसपास स्थित है और अन्य वस्तुओं के साथ बातचीत करता है यदि वे भी कोलाइडर से घिरे हैं .
*Warcraft 3* विश्व संपादक के विशेषज्ञों को स्पष्ट रूप से समझाने के लिए, हमारे द्वारा आयात किए गए मॉडल की कल्पना करें, जिसके लिए हमने डूडाड संपादक में पथ बनावट निर्दिष्ट नहीं की थी - यह हमारा उद्देश्य होगा; और यहां कोलाइडर की भूमिका मॉडल के चारों ओर पथ के अवरोधकों द्वारा निभाई जाएगी। स्वाभाविक रूप से, यह एक अपेक्षाकृत कठिन तुलना है, क्योंकि *एकता* में वे बहुत अधिक कार्यात्मक हैं। खैर, आइए करीब से देखें।
कोलाइडर के प्रकार। =
मेनू के माध्यम से कोलाइडर जोड़े जाते हैं घटक - भौतिकी
. कई प्रकार हैं:
- बॉक्स कोलाइडर- एक घन के रूप में।
- क्षेत्र कोलाइडर- एक गोले के रूप में।
- कैप्सूल कोलाइडर- कैप्सूल के रूप में।
- मेष कोलाइडर- ऑब्जेक्ट ग्रिड के आकार के अनुसार स्वचालित रूप से एक कोलाइडर बनाता है, उसी प्रकार के अन्य कोलाइडर से नहीं टकरा सकता। मुख्य रूप से स्थिर वस्तुओं के लिए उपयोग किया जाता है, जैसे कि रेस ट्रैक का वातावरण।
- व्हील कोलाइडर- पहियों के लिए प्रयुक्त, एक बहुत ही उपयोगी वस्तु।
- कंपाउंड कोलाइडर- आदिम के संयोजन जो एक साथ एक के रूप में कार्य करते हैं। इस तरह के एक जटिल कोलाइडर को बनाने के लिए, आपको हमारे बेस कोलाइडर में चाइल्ड ऑब्जेक्ट्स को जोड़ना होगा, और पहले से ही उन्हें आदिम द्वारा बांधना होगा। इस प्रकार, उदाहरण के लिए, कारों के लिए साधारण कोलाइडर बहुत आसानी से बनाए जाते हैं।
कस्टम निर्दिष्टीकरण =
सिद्धांत रूप में, सभी कोलाइडर एक दूसरे के समान होते हैं, उनका उपयोग केवल विभिन्न आकृतियों की वस्तुओं के लिए किया जाता है, हालांकि, उनके कई अलग-अलग पैरामीटर होते हैं।
- *घन*
* *सामग्री* - दिखाता है कि धातु, बर्फ, आदि जैसे भौतिक सामग्री को निर्दिष्ट करते समय कोलाइडर अन्य वस्तुओं के साथ कैसे संपर्क करता है।
* ट्रिगर है- यदि पैरामीटर सक्षम है, तो वस्तु स्क्रिप्ट से प्रभावित होती है, भौतिकी से नहीं।
* *आकार* - X-Y-Z अक्षों के साथ कोलाइडर का आकार।
* *केंद्र* - वस्तु के स्थानीय निर्देशांक के सापेक्ष कोलाइडर की स्थिति।
- *वृत्त*
* *त्रिज्या* - गोले की त्रिज्या, *आकार* पैरामीटर को बदल देती है।
* अन्य पैरामीटर अपरिवर्तित।
- *कैप्सूल* (पैरामीटर आकार बदलते हैं)
* *त्रिज्या* - कैप्सूल की मोटाई।
* *ऊंचाई* - कोलाइडर के बेलनाकार भाग की ऊँचाई (बिना गोल आधारों के)।
* *दिशा* - वस्तु के स्थानीय निर्देशांक के सापेक्ष कोलाइडर की दिशा।
- मेष कोलाइडर(पैरामीटर आकार बदलते हैं)
* *मेष* - कोलाइडर बनाने के लिए वांछित जाल का चयन करें।
* चिकना क्षेत्र टकराव
- इस फ़ंक्शन को सक्षम करने से कोलाइडर की सतह चिकनी हो जाती है। इसका उपयोग चिकनी सतहों पर किया जाना चाहिए, उदाहरण के लिए, बहुत अधिक कोणीयता के बिना ढलान वाला इलाका, जिस पर गोले लुढ़कने चाहिए।
* *उत्तल* - सक्षम होने पर, हमारे कोलाइडर को अन्य कोलाइडर से टकराने की अनुमति देता है। उत्तल जाल कोलाइडरतक सीमित है 255 त्रिकोण.
- व्हील कोलाइडर(पैरामीटर आकार बदलते हैं)
* *त्रिज्या* - पहिए की त्रिज्या।
* निलंबन दूरी- व्हील सस्पेंशन को बढ़ाने के लिए अधिकतम दूरी। निलंबन हमेशा स्थानीय *Y* अक्ष से नीचे की ओर बढ़ता है।
* सस्पेंशन स्प्रिंग- निलंबन विभिन्न बलों का उपयोग करके निर्दिष्ट बिंदु तक पहुंचने का प्रयास करता है।
- वसंत: निर्दिष्ट बिंदु (स्थिति) तक पहुंचने का प्रयास। सेटिंग जितनी ऊंची होगी, उतनी ही तेजी से पहुंचा जा सकेगा।
- स्पंज: नरम करता है, निलंबन की गति को धीमा कर देता है। मूल्य जितना अधिक होता है, उतना ही धीमा स्पंज चलता है।
- लक्ष्य स्थिति: कुल "पथ" जो निलंबन "यात्रा" कर सकता है। *0* का अर्थ है पूरी तरह से विस्तारित और *1* पूरी तरह से संकुचित। डिफ़ॉल्ट मान 0 है, जो सामान्य कार निलंबन से मेल खाता है।
* *द्रव्यमान* - पहिये का द्रव्यमान।
* आगे/बग़ल में घर्षण
- पहिया के साधारण रोलिंग के लिए और बग़ल में रोलिंग के लिए घर्षण पैरामीटर (यह स्किड्स या ड्रिफ्टिंग में होता है)।
देखा गया: 734
मेरा अजीब रचनात्मक पथ मुझे खेल के विकास में ले गया। एक आईटी कंपनी के एक उत्कृष्ट छात्र कार्यक्रम के लिए धन्यवाद, जिसके नाम में एक छोटा ग्रीक अक्षर है, हमारे विश्वविद्यालय के साथ सहयोग करते हुए, हम एक टीम को इकट्ठा करने, प्रलेखन को जन्म देने और एक उच्च श्रेणी की देखरेख में एजाइल गेम विकास स्थापित करने में कामयाब रहे। क्यूए इंजीनियर (हैलो अन्ना!)
बिना ज्यादा सोचे समझे एकता को इंजन के रूप में चुना गया। यह एक अद्भुत इंजन है, जिस पर आप वास्तव में जल्दी और आसानी से बहुत कुछ बना सकते हैं खराब खेलजो, उनके सही दिमाग में, कोई भी कभी नहीं खेलेंगे। बनाना अच्छा खेल, आपको अभी भी दस्तावेज़ीकरण को फावड़ा देना है, कुछ विशेषताओं में तल्लीन करना है और विकास का अनुभव प्राप्त करना है।
हमारे गेम ने भौतिकी इंजन का इस तरह से उपयोग किया जिसकी उसे उम्मीद नहीं थी, जिससे मोबाइल प्लेटफॉर्म पर बहुत सारे प्रदर्शन के मुद्दे पैदा हुए। यह लेख, हमारे खेल के उदाहरण का उपयोग करते हुए, भौतिकी इंजन के साथ मेरे संघर्ष और इसके काम की सभी विशेषताओं का वर्णन करता है जो एक व्यवहार्य बीटा संस्करण के रास्ते में देखे गए थे।
खेल
इसे कैसे बनाया जाता है, इसके बारे में कुछ शब्द।
ब्लेंडर और कुछ अजगर लिपियों के साथ बनाया गया। शूटिंग के समय, स्क्रीन के कोने में 16 वर्ग होते थे, जिनका रंग एक फ्लोटिंग पॉइंट नंबर के 32 बिट्स को एन्कोड करता था - एक निश्चित समय में फोन का घूमना। आर, जी - डेटा, बी - समता। 0 - 0, 255 - 1. कंप्यूटर पर शूट किए गए वीडियो को ffmpeg का उपयोग करके फ्रेम में विभाजित किया गया था, प्रत्येक रेंडर फ्रेम को एक डिकोडेड कोण सौंपा गया था। इस प्रारूप ने शूटिंग प्रक्रिया के दौरान किसी भी संपीड़न से बचना संभव बना दिया और इस तथ्य पर काबू पा लिया कि सभी कार्यक्रमों में समय बीतने के बारे में थोड़ा अलग विचार हैं। वास्तव में, गेम उसी तरह से चलता है जैसे रेंडर पर।
विमान एक अंतहीन और अप्रत्याशित गुफा से उड़ता है, जिसमें बोनस, सभी प्रकार के सिक्के और दुश्मन हैं जिन्हें आप होमिंग मिसाइलों से शूट कर सकते हैं। दीवार से टकराया - तुरंत खो गया।
खेल की एक विशिष्ट विशेषता यह है कि स्तर को क्षितिज तक खींचा जाता है और इसमें नियंत्रण जाइरोस्कोपिक, इसके अलावा, निरपेक्ष होता है। फोन को 45 डिग्री झुकाएं - विमान ने 45 डिग्री के कोण पर उड़ान भरी। आपको एक डेड लूप बनाने की जरूरत है - आपको टैबलेट को मोड़ना होगा। कोई संवेदनशीलता नहीं है, केवल कट्टर है।
आइए डेवलपर के लिए दो मुख्य और स्पष्ट समस्याओं पर ध्यान दें:
समस्या 1: अनंत
यूनिटी स्टोर और प्रोसेस ऑब्जेक्ट को सामान्य 32-बिट फ़्लोट के रूप में कहीं भी 6 दशमलव स्थानों की सटीकता के साथ समन्वयित करता है। समस्या यह है कि हमारे पास एक अंतहीन खेल है और यदि हम काफी देर तक उड़ते हैं, तो दीवारों के माध्यम से टेलीपोर्टेशन तक, सभी प्रकार के पागल कीड़े शुरू हो जाएंगे। इस समस्या को हल करने के कई तरीके हैं:हमारे मामले में, एकमात्र स्वीकार्य विकल्प तीसरा है, जिसे लागू किया गया था। कार्यान्वयन के बारे में - थोड़ी देर बाद।
पहली - अनदेखी - बिल्कुल अस्वीकार्य है। एक ऐसा रोबोट बनाना जो हमारे खेल को हमेशा के लिए खेल सके एक दिलचस्प (और काफी सरल) कार्य है जिसे कोई हल करेगा। और सामान्य कोरियाई खिलाड़ियों को कम करके नहीं आंका जाना चाहिए - हवाई जहाज तेज है, स्तर अप्रत्याशित रूप से उत्पन्न होता है। और यदि आप दीवारों से गुजरने से पहले उड़ते और उड़ते हैं, तो स्पष्ट रूप से अधिक सटीक शूटिंग 5 मिनट की उड़ान के बाद गड़बड़ होना शुरू हो जाएगी।
दूसरा - खिलाड़ी और पूरी दुनिया का टेलीपोर्टेशन - मोबाइल उपकरणों को अपने घुटनों पर लाता है, कुछ मामलों में - लगभग आधे सेकंड के लिए। यह बहुत ध्यान देने योग्य है, और इसलिए - अस्वीकार्य है। लेकिन सरल अंतहीन पीसी गेम के लिए यह पूरी तरह से स्वीकार्य विकल्प है।
समस्या 2: स्तर निर्माण
अंतहीन धावक बनाने के लिए कई बुनियादी दृष्टिकोण हैं:
बेशक, हमने सबसे कठिन विकल्प चुना। इसके दिल में एक बहुत ही जटिल राज्य मशीन है जो उन पर यादृच्छिक संक्रमण करती है। लेकिन इस लेख के ढांचे के भीतर, यह दिलचस्प तंत्र नहीं है, बल्कि चुने हुए शुरुआती बिंदु को ध्यान में रखते हुए स्तर और उसके संगठन को उत्पन्न करने की प्रक्रिया है।
स्तर संरचना
हम एक गुफा में उड़ रहे हैं, इसमें एक मंजिल और छत है - कुछ ब्लॉक, प्राथमिक निर्माण इकाइयां। ब्लॉकों को उन खंडों में संयोजित किया जाता है जो मूल रूप से एक दूसरे से जुड़ते हैं। खंड, समग्र रूप से, विमान के चारों ओर घूमते हैं और इसके वेग वेक्टर के साथ चलते हैं, जिससे उड़ान का भ्रम पैदा होता है। यदि कोई खंड कैमरे के देखने के क्षेत्र को छोड़ देता है, तो इसे ब्लॉक से हटा दिया जाता है, स्तर के अंतिम खंड में डॉक किया जाता है और जनरेटर के निर्देशों के अनुसार नए ब्लॉकों से भर दिया जाता है। ऐसे खंडों की समग्रता स्तर है।
अनुभवी एकता डेवलपर्स काम की मात्रा और सभी संभावित नुकसानों का अनुमान लगाकर उचित रूप से विंस कर सकते हैं। लेकिन शब्दों में, सब कुछ सरल है, लेकिन मुझे विकास का कोई अनुभव नहीं था ...
एकता में भौतिकी के बुनियादी नियम
विकास, प्रयोग और प्रलेखन पढ़ने के एक महीने में, मैंने एकता में भौतिकी के तीन बुनियादी नियमों की पहचान की है। उनका उल्लंघन किया जा सकता है, लेकिन उल्लंघन की कीमत प्रदर्शन है। इंजन आपको किसी भी तरह से त्रुटि के बारे में चेतावनी नहीं देगा, और एक प्रोफाइलर के बिना आप उनके बारे में कभी नहीं जान सकते हैं। इन कानूनों का पालन करने में विफलता आपके खेल को धीमा कर सकती है दसियों मेंएक बार। जैसा कि मैं इसे समझता हूं, किसी भी कानून का उल्लंघन इस तथ्य की ओर जाता है कि भौतिकी इंजन आपत्तिजनक कोलाइडर को गलत के रूप में चिह्नित करता है और इसे वस्तु पर फिर से बनाता है, इसके बाद भौतिकी की पुनर्गणना होती है:1. कोलाइडर हिलना, घुमाना, चालू/बंद नहीं करना चाहिए और आकार नहीं बदलना चाहिए।
एक बार जब आप किसी वस्तु में एक कोलाइडर जोड़ लेते हैं, तो उस पर या उसमें मौजूद वस्तुओं पर किसी भी प्रभाव के बारे में भूल जाते हैं। एक साधारण कोलाइडर एक विशेष रूप से स्थिर वस्तु है। एक पेड़, उदाहरण के लिए, एक कोलाइडर के साथ हो सकता है। यदि खिलाड़ी पर पेड़ गिर सकता है - प्रदर्शन के साथ-साथ पेड़ भी गिरेगा। यदि यह पेड़ एक जादुई पोषक बादल से बढ़ता है जिसमें कोलाइडर नहीं होता है, लेकिन यह हिल सकता है, तो यह प्रदर्शन में गिरावट के साथ होगा।2. यदि वस्तु घूम रही है या घूम रही है - तो यह एक ठोस पिंड होना चाहिए अर्थात। एक Rigidbody घटक है।
इसके बारे में प्रलेखन में लिखा है, हाँ। जिसे गेम बनाना शुरू करने के लिए सोच समझकर पढ़ना जरूरी नहीं है, क्योंकि यूनिटी बहुत ही सरल और सहज ज्ञान युक्त है।रिगिडबॉडी भौतिकी इंजन के संबंध को वस्तु से बदल देती है। बाहरी बल इस पर कार्य करना शुरू करते हैं, इसमें रैखिक और कोणीय वेग हो सकते हैं, और सबसे महत्वपूर्ण बात यह है कि एक कठोर शरीर भौतिकी के पूर्ण पुनर्गणना के बिना भौतिकी इंजन के माध्यम से आगे बढ़ सकता है और घूम सकता है।
ठोस दो प्रकार के होते हैं - पारंपरिक और गतिज। साधारण निकाय आपस में और साधारण कोलाइडर के साथ परस्पर क्रिया करते हैं - एक शरीर दूसरे से नहीं गुजर सकता। गतिज पिंड सरलीकृत सिमुलेशन नियमों का पालन करते हैं - वे गुरुत्वाकर्षण सहित किसी भी बाहरी ताकत से प्रभावित नहीं होते हैं। वे कुछ भी करने के लिए स्वतंत्र हैं।
यदि भौतिक इंजन के नियंत्रण में वस्तुओं को देना अफ़सोस की बात नहीं है - साधारण कठोर निकायों का उपयोग करें। उदाहरण के लिए, यदि आपको एक चट्टान से पत्थरों को खूबसूरती से रोल करने की आवश्यकता है। यदि आपकी स्क्रिप्ट या एनिमेटर सीधे वस्तु को नियंत्रित करते हैं - गतिज निकायों का उपयोग करें, इसलिए आपको इंजन और यादृच्छिक वस्तु टकराव से लगातार निपटने की आवश्यकता नहीं है। उदाहरण के लिए, यदि आपके पास एक एनिमेटेड चरित्र या एक निर्देशित मिसाइल है जो किसी चीज के संपर्क में आने पर फट जाती है।
3. यदि वस्तु एक कठोर शरीर है, तो उसे कठोर शरीर विधियों के माध्यम से घूमना और घूमना चाहिए।
किसी ऑब्जेक्ट में कोलाइडर जोड़ने के तुरंत बाद ट्रांसफ़ॉर्म को सीधे कॉल करने के बारे में भूल जाएं। अब से और हमेशा के लिए, ट्रांसफ़ॉर्म आपका दुश्मन और प्रदर्शन हत्यारा है। इससे पहले कि आप ट्रांसफ़ॉर्म लिखें। स्थिति = ... या ट्रांसफ़ॉर्म। यूलरएंगल्स = ..., वाक्यांश कहो "मैं अब पूरी तरह से स्पष्ट रूप से समझता हूं कि मैं क्या कर रहा हूं, मैं इस रेखा के कारण होने वाले ब्रेक से संतुष्ट हूं।" पदानुक्रमित संबंधों के बारे में मत भूलना: यदि आप अचानक कठोर शरीर वाली वस्तु को स्थानांतरित करते हैं, तो भौतिकी पुनर्गणना की जाएगी।कठोर शरीर नियंत्रण के तीन स्तर हैं:
- उच्चतम और इसलिए प्राकृतिक स्तर बलों के माध्यम से होता है। ये AddForce और AddTorque तरीके हैं। भौतिकी इंजन शरीर के द्रव्यमान को ध्यान में रखेगा और परिणामी गति की सही गणना करेगा। इस स्तर पर निकायों की सभी बातचीत होती है।- औसत स्तर - गति में परिवर्तन। ये वेग और कोणीय वेग गुण हैं। उनके आधार पर, उनकी बातचीत के दौरान निकायों को प्रभावित करने वाली ताकतों की गणना की जाती है, साथ ही, जाहिर है, समय के अगले क्षण में उनकी स्थिति। यदि एक कठोर शरीर की गति बहुत कम है, तो यह संसाधनों को बचाने के लिए "सो जाता है"।
- निम्नतम स्तर - सीधे वस्तु के निर्देशांक और अंतरिक्ष में उसका अभिविन्यास। ये MovePosition और MoveRotation विधियाँ हैं। भौतिकी गणना के अगले पुनरावृत्ति पर (यह महत्वपूर्ण है, क्योंकि एक फ्रेम के भीतर प्रत्येक बाद की विधि कॉल पिछले एक की कॉल को बदल देती है), वे ऑब्जेक्ट को एक नई स्थिति में टेलीपोर्ट करते हैं, जिसके बाद यह पहले की तरह रहता है। हमारे खेल में, इस स्तर का उपयोग किया जाता है, और केवल इसलिए, क्योंकि यह वस्तु पर पूर्ण नियंत्रण प्रदान करता है।
पीछे क्या बचा है? ऑब्जेक्ट को चालू/बंद करें और ज़ूम करें। मुझे नहीं पता कि इंजन को भ्रमित किए बिना किसी वस्तु का आकार बदलने का कोई तरीका है या नहीं। यह बिलकुल संभव नहीं है। वस्तु को बंद करना दर्द रहित है, और इसे चालू करना ... हाँ, चालू वस्तु के आसपास के क्षेत्र में भौतिकी के पुनर्गणना का कारण बनता है। इसलिए कोशिश करें कि एक ही समय में बहुत सारी वस्तुओं को शामिल न करें, इस प्रक्रिया को समय से आगे बढ़ाएं ताकि उपयोगकर्ता ध्यान न दे।
एक कानून है जो प्रदर्शन को प्रभावित नहीं करता है, लेकिन प्रदर्शन को प्रभावित करता है: एक कठोर शरीर एक कठोर शरीर का हिस्सा नहीं हो सकता है। मूल वस्तु हावी होगी, इसलिए बच्चा या तो माता-पिता के सापेक्ष स्थिर रहेगा, या अप्रत्याशित और गलत व्यवहार करेगा।
एकता की एक और गैर-भौतिकी विशेषता है जो ध्यान देने योग्य है: तत्काल/नष्ट विधियों के माध्यम से वस्तुओं को गतिशील रूप से बनाना और हटाना पागल धीमा है। मैं यह कल्पना करने से भी डरता हूं कि वस्तु के निर्माण के दौरान हुड के नीचे क्या हो रहा है। यदि आपको गतिशील रूप से कुछ बनाने और हटाने की आवश्यकता है - कारखानों का उपयोग करें और गेम लोडिंग के दौरान उन्हें आवश्यक वस्तुओं से भरें। तत्काल को अंतिम उपाय के रूप में बुलाया जाना चाहिए - यदि कारखाने में अचानक मुक्त वस्तुओं से बाहर निकलता है, और हमेशा के लिए नष्ट करने के बारे में भूल जाता है - बनाई गई हर चीज का पुन: उपयोग किया जाना चाहिए।
व्यवहार में कानूनों का अनुप्रयोग
(इस खंड में खेल और इसकी विशेषताओं को बनाते समय तर्क का पाठ्यक्रम शामिल है)स्तर को स्पष्ट रूप से घूमने और स्थानांतरित करने की आवश्यकता है।
आइए निर्देशांक के मूल में स्तर - हवाई जहाज - के रोटेशन की धुरी को रखकर अपने जीवन को हमेशा के लिए आसान बना दें। अब हम बिंदु के निर्देशांक वेक्टर की लंबाई की गणना करके एक बिंदु से उस तक की दूरी की गणना कर सकते हैं। एक छोटी सी, लेकिन अच्छी।
वस्तुओं के सहकारी आंदोलन को एकता में वस्तु पदानुक्रम के माध्यम से आसानी से लागू किया जाता है क्योंकि बच्चे माता-पिता का हिस्सा होते हैं। उदाहरण के लिए, वर्णित स्तर संरचना तार्किक रूप से निम्नानुसार कार्यान्वित की जाती है:
- अक्ष
- - स्तर
- - - खंड 1
- - - - ब्लॉक 1 (कोलाइडर)
- - - - ...
- - - - ब्लॉक नंबर
- - - खंड 2 ...
- - - खंड 3 ...
- - - खंड 4 ...
(आप स्तर वस्तु के बिना भी कर सकते हैं)
अक्ष पर लिपि जाइरोस्कोप से डेटा प्राप्त करती है और इसके लिए उपयुक्त कोण सेट करती है ... और यह तुरंत कई नियमों का उल्लंघन करती है, क्योंकि रोटेशन को पदानुक्रम के माध्यम से कोलाइडर में स्थानांतरित किया जाएगा, जो भौतिकी इंजन को पागल कर देगा। आपको धुरी को एक कठोर पिंड बनाना होगा और उसे उपयुक्त विधि से घुमाना होगा। लेकिन लेवल मूवमेंट का क्या? जाहिर है, रोटेशन की धुरी और स्तर की वस्तु नहीं चलेगी, प्रत्येक खंड को व्यक्तिगत रूप से स्थानांतरित किया जाना चाहिए, अन्यथा हमें अनंत की समस्या का सामना करना पड़ता है। इसका मतलब है कि खंड कठोर शरीर होना चाहिए। लेकिन हमारे पास पहले से ही पदानुक्रम में एक कठोर शरीर है और एक कठोर शरीर कठोर शरीर का हिस्सा नहीं हो सकता है। एक तार्किक और सुरुचिपूर्ण पदानुक्रम फिट नहीं होता है, रोटेशन की धुरी के लिए किसी वस्तु का उपयोग किए बिना, सब कुछ हाथ से करना होगा - रोटेशन और अनुवाद दोनों। इसके लिए तैयार रहें यदि आपके पास अद्वितीय गेमप्ले सुविधाएँ हैं।
यदि आपको वैसे भी खंडों को सीधे स्थानांतरित करना होगा, तो आपको उन्हें घुमाना होगा। मुख्य कठिनाई यह है कि एकता भौतिकी इंजन में "किसी वस्तु को एक मनमाना बिंदु के चारों ओर घुमाएँ" विधि नहीं है (ट्रांसफ़ॉर्म में यह है, लेकिन परीक्षा न लें)। केवल "इसके केंद्र के चारों ओर घूमना" है। यह तर्कसंगत है, क्योंकि एक मनमानी धुरी के चारों ओर घूर्णन एक ही समय में घूर्णन और गति दोनों है, और ये दो अलग-अलग संचालन हैं। लेकिन इसका अनुकरण किया जा सकता है। सबसे पहले, हम खंड को अपनी धुरी के चारों ओर घुमाते हैं, फिर हम विमान के चारों ओर "स्वयं की धुरी" के निर्देशांक घुमाते हैं। इस तथ्य के कारण कि हमारे पास मूल में विमान है, आपको स्कूल की ज्यामिति को याद रखने और विकिपीडिया पर जाने की भी आवश्यकता नहीं है, एकता के पास पहले से ही सब कुछ है। यह रोटेशन के कोण को चतुर्भुज में बदलने और बिंदु के निर्देशांक से गुणा करने के लिए पर्याप्त है। वैसे, मुझे इस अधिकार के बारे में लेख लिखते समय पता चला, इससे पहले एक रोटेशन मैट्रिक्स का उपयोग किया जाता था।
हमारे दुश्मन हैं जो मारने की उम्मीद में विमान को दीवार में धकेल देते हैं। एक ढाल है जो दीवारों से विमान को पीछे हटाती है, जीवित रहने में मदद करती है। यह मामूली रूप से कार्यान्वित किया जाता है - एक ऑफसेट वेक्टर होता है, जिसे प्रत्येक सेगमेंट के निर्देशांक में प्रत्येक फ्रेम में जोड़ा जाता है और उसके बाद रीसेट किया जाता है। जो कोई भी हवाई जहाज को लात मारना चाहता है, एक विशेष विधि के माध्यम से, अपने किक के वेक्टर को छोड़ सकता है, जिसे इस विस्थापन वेक्टर में जोड़ा जाएगा।
अंततः, खंड के वास्तविक निर्देशांक, प्रत्येक फ्रेम, की गणना स्तर के गति नियंत्रण केंद्र द्वारा कुछ इस तरह की जाती है:
वेक्टर 3 स्थिति = खंड। कैश्ड रिगिडबॉडी। स्थिति; वेक्टर 3 डेल्टापोस = टाइम। डेल्टाटाइम * वेक्टर 3.लेफ्ट * सेटिंग्स। स्पीड; खंड.truePosition = Quaternion.Euler(0, 0, deltaAngle) * (स्थिति + डेल्टा स्थिति + गति ऑफसेट);
पुनर्जनन के दौरान खंडों के सटीक डॉकिंग के साथ काम करने के लिए आवश्यक सभी गणनाओं और बैसाखी के बाद, खंड के कठोर शरीर के MovePosition विधि को खंड.truePosition भेजा जाता है।
निष्कर्ष
यह सब कितनी तेजी से काम करता है? पुराने फ़्लैगशिप - Nexus 5 और LG G2 पर - गेम 60 FPS पर उड़ता है, जब सेगमेंट जनरेशन के दौरान नए कोलाइडर चालू होते हैं (यह अपरिहार्य है और इसे किसी भी तरह से टाला नहीं जा सकता है) और कीड़े को बाहर धकेलते हुए मुश्किल से ध्यान देने योग्य गिरावट के साथ जमीन (आप इसके चारों ओर पाने के लिए किसी प्रकार का नरक ढेर कर सकते हैं, लेकिन अब तीसरे कानून का जानबूझकर उल्लंघन है)। 40 स्थिर एफपीएस किसी भी उपकरण को जाइरोस्कोप के साथ देता है जो हमारे सामने आया था। सभी कानूनों को जाने और ध्यान में रखे बिना, प्रदर्शन, इसे हल्के ढंग से, असंतोषजनक और फोन को गर्म करने के लिए था। इतना अधिक कि मैंने 2d भौतिकी के लिए अपना स्वयं का सरल विशेषीकृत इंजन लिखने के बारे में सोचा। सौभाग्य से, एकता में भौतिकी इतनी लचीली थी कि सभी समस्याओं को दरकिनार और बनाया जा सकता था अनोखा खेल, यह केवल कुछ हफ़्ते के प्रयोगों के लिए पर्याप्त था।अब, एकता भौतिकी इंजन के सभी मुख्य नुकसानों को जानकर, आप मानवता में तीन गरीब छात्रों के सपनों, जीवन और विश्वास को नष्ट करते हुए, हमारे खेल को जल्दी से क्लोन कर सकते हैं। मुझे उम्मीद है कि यह लेख भविष्य में आपका बहुत समय बचाएगा और आपको अपनी परियोजनाओं में उत्पादक भौतिकी के नियमों के स्पष्ट उल्लंघनों को खोजने में मदद करेगा।
दस्तावेज़ीकरण और प्रयोग पढ़ें, भले ही आप सरल और सहज उपकरणों का उपयोग करें।