शीर्ष नीचे आरपीजी आंदोलन w / सुधार?


27

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

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

मैंने इसे प्राप्त करने के लिए कुशल तरीकों का शिकार किया है और कोई भाग्य नहीं है। स्पष्ट होने के लिए मैं एनपीसी के आंदोलन के नहीं बल्कि मानव चरित्र के आंदोलन के बारे में बात कर रहा हूं। क्या उनके संसाधन इस तरह के आंदोलन पर उपलब्ध हैं? समीकरण या एल्गोरिदम एक विकी या कुछ पर समझाया?

मैं XNA फ्रेमवर्क का उपयोग कर रहा हूं, क्या इसमें कुछ भी मदद करने के लिए है?

जवाबों:


23

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

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

तीसरे बिंदु के लिए, यह मानते हुए कि आपके पास दीवार और खिलाड़ी दोनों के लिए टकराव की आयतें हैं, आपको यह निर्धारित करने में सक्षम होना चाहिए कि दीवार की टक्कर आयत के साथ खिलाड़ी के टक्कर आयत के कितने संपर्क हैं। यदि, उदाहरण के लिए, खिलाड़ी दाईं ओर जा रहा है और एक ऊर्ध्वाधर दीवार से टकराता है, तो आप टक्कर आयतों के वाई अक्ष एक्सटेंट की तुलना करते हैं - यदि खिलाड़ी की सीमा दीवार की सीमा से कुछ हद तक अधिक है, तो खिलाड़ी का 75% वाई कहें धुरी की सीमा, तो आप खिलाड़ी को दरवाजे की ओर "धोखा" देते हैं।

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


हाँ, चरित्र के चारों ओर तैरना कोई समस्या नहीं थी। बस यह सुनिश्चित करते हुए कि लोगों ने देखा कि यह एक आवश्यकता थी। आपने मुझे मुख्य उत्तर दिया: टाइल्स वाले वैक्टर! मुझे विश्वास नहीं हो रहा है कि मैंने ऐसा नहीं सोचा था। धन्यवाद।
कोरी ओगबर्न

ज़ेल्डा में , केवल एक-कोण वे हो सकते थे, इसलिए सामान्य-वैक्टरों की गणना करने की कोई आवश्यकता नहीं थी, यह कोड में केवल एक विशेष मामला था।
ब्लूराजा - डैनी पफ्लुघोटे

मुझे समझ में नहीं आता कि आप एक टाइल को वेक्टर कैसे देते हैं। वो कैसा लगता है?
परीक्षण

एक टाइल में पहले से ही इसके ग्राफिक की तरह डेटा होता है, चाहे वह पास करने योग्य हो या न हो, आदि यह सिर्फ एक अन्य क्षेत्र है। उदाहरण के लिए: स्ट्रक्चर टाइल {वेक्टर 2 सामान्य; ...} सामान्य का मान टाइल को परिभाषित करने वाले डेटा के साथ आना चाहिए
जोश

@JoshPetrie इसे पुनर्जीवित कर रहा है। क्या एक टाइल जिसे कई दिशाओं में टकराया जा सकता है, उसके लिए कई वैक्टर होने चाहिए? मुझे यकीन नहीं है कि मैं समझता हूं कि एक टाइल में एक एकल वेक्टर कैसे हो सकता है।
परीक्षण करें

4

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


3

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


या टक्कर बॉक्स शायद एक चक्र हो सकता है?
ऑस्कर डुवॉर्न

2

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.