प्रत्येक प्रकार के MapChip के लिए हिट डिटेक्शन लागू करें
सत्यापन वातावरण
- विंडोज़
-
- विंडोज 11
- एकता संपादक
-
- 2021.3.3f1
- इनपुट सिस्टम पैकेज
-
- 1.3.0
इस टिप के लिए आवश्यक शर्तें
इस टिप के विवरण के लिए एक आधार के रूप में निम्नलिखित सेटिंग्स पहले से बनाई गई हैं।
इस टिप के लिए आवश्यक शर्तें क्या हैं?
- मानक एकता टाइलमैप्स का उपयोग करके एक टॉप-डाउन 2 डी मानचित्र बनाएं
- मानक भौतिकी के साथ टकराव हैंडलिंग (2 डी)
- टाइलमैप के साथ हिट डिटेक्शन लागू करें
मानचित्र सामग्री उधार लेने के बारे में
हम निम्नलिखित साइटों से उधार ली गई प्रक्रिया करते हैं।
पहले
इस बार, मैपचिप्स को एक टाइलमैप में रखा गया है, और यह तय किया गया है कि मैपटिप के प्रकार के अनुसार हिट निर्धारण करना है या नहीं।
चूंकि यह टिप काफी हद तक एक अन्य टिप "टाइलमैप्स के साथ हिट डिटेक्शन लागू करें" के समान है, कृपया विस्तृत विवरण के लिए वहां देखें। यहां, केवल प्रक्रिया को एक ही सामग्री के लिए समझाया गया है, और केवल अंतर जोड़े गए हैं।
चलने वाले पात्रों का कार्यान्वयन
सबसे पहले, एक स्प्राइट छवि तैयार करें जिसे खिलाड़ी हिट डिटेक्शन ऑपरेशन करने के लिए नियंत्रित करेगा और इसे अपने प्रोजेक्ट में जोड़ देगा। इस बार, मैपटिप का आकार 32 पिक्सेल है, इसलिए मैं छवि को समान आकार दूंगा।
मैं इस बार चलने वाले एनीमेशन को छोड़ दूंगा क्योंकि अगर इसे लागू किया जाता है तो प्रक्रिया लंबी होगी। यदि आप इसे लागू करना चाहते हैं, तो कृपया निम्नलिखित युक्तियों को देखें।
उस छवि का चयन करें जिसे आपने अपने प्रोजेक्ट में जोड़ा है. चूंकि हम मैप चिप के साथ इकाई का मिलान करना चाहते हैं, इसलिए "प्रति इकाई पिक्सेल की संख्या" को "32" पर सेट करें।
एक बार कॉन्फ़िगर होने के बाद, नीचे दिए गए "लागू करें" बटन पर क्लिक करें।
एक बार छवि सेट हो जाने के बाद, छवि को दृश्य में छोड़ दें और ऑब्जेक्ट जोड़ें।
चरित्र की आंदोलन प्रक्रिया सेट करें। स्क्रिप्ट जोड़ें और इसे नाम Player
दें।
स्क्रिप्ट इस तरह दिखती है: यह एक सरल आंदोलन प्रक्रिया है जो कीबोर्ड के साथ स्प्राइट को स्थानांतरित करती है।
using UnityEngine;
using UnityEngine.InputSystem;
public class Player : MonoBehaviour
{
// 一定時間ごとに呼ばれます
void FixedUpdate()
{
// キーボードの情報を取得
var keyboard = Keyboard.current;
// スプライトの移動処理
if (keyboard.leftArrowKey.isPressed)
{
transform.Translate(-0.1f, 0, 0, Space.World);
}
if (keyboard.rightArrowKey.isPressed)
{
transform.Translate(0.1f, 0, 0, Space.World);
}
if (keyboard.upArrowKey.isPressed)
{
transform.Translate(0, 0.1f, 0, Space.World);
}
if (keyboard.downArrowKey.isPressed)
{
transform.Translate(0, -0.1f, 0, Space.World);
}
}
}
आपके द्वारा बनाई गई स्क्रिप्ट वर्ण ऑब्जेक्ट से जुड़ जाती है.
गेम चलाएं और जांचें कि क्या चरित्र कीबोर्ड के साथ चलता है।
मैपटिप्स तैयार करना
एक मैपटिप छवि तैयार करें और इसे अपने प्रोजेक्ट में जोड़ें। जैसे-जैसे मैप चिप्स की संख्या बढ़ती है, सेटिंग परेशानी भरी हो जाती है, इसलिए इस बार हमने केवल दो वर्ग तैयार किए हैं, एक जो चल सकता है और एक जो चल नहीं सकता है।
आपके द्वारा अपनी परियोजना में जोड़ी गई छवियों का चयन करें और MapChips के लिए सेटिंग्स कॉन्फ़िगर करें। अधिक जानकारी के लिए निम्न युक्तियाँ देखें:
एक बार कॉन्फ़िगर हो जाने के बाद, लागू करें बटन पर क्लिक करें और फिर स्प्राइट संपादक बटन।
32 पिक्सेल से विभाजित करें।
पैलेट बनाने के लिए टाइल पैलेट टैब का चयन करें। यदि कोई टैब नहीं हैं, तो आप उन्हें मेनू से "विंडो > 2 डी -> टाइल पैलेट" के साथ प्रदर्शित कर सकते हैं। पैलेट नाम कुछ भी हो सकता है, लेकिन यहां यह "मैपचिपपैलेट" है।
चूंकि हम इसे एक फ़ोल्डर में सहेजेंगे, दृश्य फ़ोल्डर में एक नया "मैपचिपपैलेट" फ़ोल्डर बनाएं और इसे निर्दिष्ट करें।
प्रोजेक्ट में एक MapChipPalett फ़ोल्डर जोड़ा गया है।
इसके बाद, आप पैलेट में मैपटिप्स जोड़ देंगे। विभाजित मैपटिप छवि को पैलेट पर खींचें और छोड़ दें।
पैलेट में मैपटिप्स जोड़े गए हैं।
एक नक्शा बनाएँ
हिट डिटेक्शन सेटिंग्स को एक तरफ छोड़ दें और पहले मैप बनाएं। आप हिट डिटेक्शन को बाद में सेट कर सकते हैं. सबसे पहले, अपने पदानुक्रम में एक टाइलमैप जोड़ें।
एक बार जोड़ने के बाद, Tilemap का चयन करें। दृश्य एक ग्रिड प्रदर्शित करता है।
सबसे पहले, एक मैपचिप सेट करें जो दृश्य में दीवार नहीं बनता है।
कुछ समय के लिए, मैंने इसे सभी जगह रख दिया।
इसके बाद, पत्थर के मैपटिप को रखें जो दीवार के रूप में काम करेगा।
इस बार कोई समस्या नहीं थी, लेकिन यदि आपका चरित्र मानचित्र के पीछे होने जा रहा है, तो लेयर ऑर्डर को टाइलमैप से बड़े नंबर पर सेट करें।
बेशक, भले ही आप इस बिंदु पर खेल को स्थानांतरित करें, आप दीवार के माध्यम से फिसल जाएंगे और चलेंगे।
MapChip हिट डिटेक्शन सेटिंग्स
यहां से, हम यह निर्धारित करेंगे कि प्रत्येक प्रकार के मानचित्र चिप के लिए हिट निर्णय दर्ज करना है या नहीं। सबसे पहले, "MapChipPalette" फ़ोल्डर खोलें जिसे आपने पैलेट बनाते समय बनाया था।
अंदर पैलेट में एक मैपटिप सेट है, इसलिए पहले एक मैपटिप का चयन करें जिस पर आप चल सकते हैं।
निरीक्षक से, कोलाइडर प्रकार मान को कोई नहीं पर सेट करें। बाद में, आप टाइलमैप में एक टक्कर का पता लगाने वाली सेटिंग जोड़ देंगे, लेकिन इसे "कोई नहीं" पर सेट करने से यह मैपचिप टकराने से बच जाएगा।
अन्य पत्थर मैपटिप को "ग्रिड" पर सेट किया गया है। चूंकि यह इस बार एक पारदर्शी मैपटिप नहीं है, इसलिए "स्प्राइट" के साथ कोई समस्या नहीं है, लेकिन यदि आप इसे "स्प्राइट" पर सेट करते हैं, तो इसे छवि के पारदर्शी हिस्से को मारकर नहीं आंका जाएगा।
MapTip के लिए बस इतना ही है। यह आसान है क्योंकि इस बार उनमें से केवल दो हैं, लेकिन यदि आपके पास बड़ी संख्या में मैप चिप्स हैं, तो आपको इतना सेट करने की आवश्यकता है।
टक्कर का पता लगाने की सेटिंग्स
यहां से, यह लगभग "टाइलमैप के साथ हिट डिटेक्शन को लागू करें" की सामग्री के समान है।
सबसे पहले, चरित्र टकराव का पता लगाने के लिए आवश्यक सेटिंग्स बनाएं। एक घटक के रूप में "भौतिकी 2 डी -> सर्कल कोलाइडर 2 डी" जोड़ें। इस बार, स्प्राइट गोल है, इसलिए मैंने इसे सर्कल बनाया, लेकिन कृपया आकार के अनुसार बॉक्स या कैप्सूल का चयन करें।
हम "भौतिकी 2 डी -> रिजिडबॉडी 2 डी" भी जोड़ेंगे।
गुरुत्वाकर्षण को नीचे गिरने से रोकने के लिए गुरुत्वाकर्षण पैमाने को 0 पर सेट करें। इसके अलावा, स्प्राइट को घूमने से रोकने के लिए "फिक्स रोटेशन" के लिए जेड की जांच करें।
टाइलमैप के लिए, टाइलमैप -> टाइलमैप कोलाइडर 2 डी घटक जोड़ें।
आप देख सकते हैं कि दृश्य में पत्थर के मैपटिप के चारों ओर एक हरे रंग की रेखा जोड़ी गई है। इसका मतलब है कि हिट डिटेक्शन केवल पत्थरों के लिए सेट किया गया है। आप देख सकते हैं कि ऊपर पैलेट में मैपटिप की कोलाइडर प्रकार सेटिंग परिलक्षित होती है।
खेल चलाने और दीवार की ओर चलने की कोशिश करें। मुझे लगता है कि आप यह सुनिश्चित कर सकते हैं कि चरित्र दीवार के सामने ठीक से रुक जाए। आप देख सकते हैं कि हिट डिटेक्शन से संबंधित किसी भी प्रोग्राम को लिखे बिना इसे आसानी से लागू किया जा सकता है।
मैपचिप हिट डिटेक्शन का संयोजन
जैसा कि नीचे दी गई युक्तियों में बताया गया है, जब आप वास्तव में इसे स्थानांतरित करते हैं, तो दीवार हिट का पता लगाने का व्यवहार थोड़ा अजीब होता है। कारण और समाधान नीचे दिए गए सुझावों में वर्णित हैं।
हालांकि, मैप चिप के हिट डिटेक्शन हिस्से को मिलाकर, अजीब व्यवहार को ठीक किया जाएगा और प्रसंस्करण भार एक ही समय में कम हो जाएगा, तो चलो इसे कम से कम करते हैं।
सबसे पहले, टाइलमैप कोलाइडर 2 डी में "समग्र में उपयोग" की जांच करें।
घटक जोड़ें के अंतर्गत, भौतिकी 2D -> कम्पोजिट कोलाइडर 2D का चयन करें.
"रिजिडबॉडी 2 डी" को भी जोड़ा जाएगा, इसलिए "बॉडी टाइप" को "स्टेटिक" बनाएं।
फिर, मुझे लगता है कि आप पुष्टि कर सकते हैं कि पत्थर का हिट निर्णय प्रत्येक मानचित्र चिप के लिए नहीं है और संयुक्त है।
अब गेम चलाएं और सुनिश्चित करें कि यह ठीक से काम कर रहा है।