2009-05-17 19 views
8

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

यह 2 डी वातावरण (ओवरहेड व्यू) है, और प्रत्येक ऑब्जेक्ट में टकराव का पता लगाने के लिए एक बाध्य आयताकार है। कोई ग्रिड नहीं है, और मैं ए * समाधान की तलाश नहीं कर रहा हूं।

मैं इस तरह के "गूंगा" टकराव-आधारित पथदर्शी पर कोई ट्यूटोरियल नहीं ढूंढ पा रहा हूं, इसलिए शायद मैं सबसे सामान्य शब्दों का उपयोग करके इसका वर्णन नहीं कर रहा हूं।

इसे कार्यान्वित करने के तरीके (या ट्यूटोरियल के लिंक) पर कोई सिफारिशें?

उत्तर

6

गुइल्यूम ने बाधा से बचने के बारे में क्या कहा, उस पर विस्तार करने वाली तकनीक, जो आपके लिए अच्छी तरह से काम करेगी anti-gravity movement है। आप स्थानीय बाधाओं को एंटीग्रैविटी के बिंदु स्रोत, गुरुत्वाकर्षण के रूप में गंतव्य के रूप में देखते हैं, और आपके कंप्यूटर नियंत्रित चरित्र गंतव्य तक पहुंचने के लिए बाधाओं के आसपास पर्ची (साबुन की तरह!) फिसल जाएगा।

+0

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

+0

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

+0

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

-1

मैं सी # एक में एक pathfinding एल्गोरिथ्म तैनात समय पहले

Here's the link

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

(पाठ में स्पेनिश है, लेकिन आप शीर्ष पर लिंक से आवेदन डाउनलोड कर सकते हैं)

+0

मूल प्रश्न उद्धृत करने के लिए: "मैं इसे पथ बनाने की कोशिश नहीं कर रहा हूं" –

+0

जो मेरे उत्तर – juan

+0

_ के बाद संपादित किया गया था [आपका उत्तर किसी अन्य महल में है: जब कोई जवाब उत्तर नहीं देता है?] (http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-an-answer-not-an-answer)_ – MickyD

1

जब भी आपके प्राणी, वेक्टर दिशा v में यात्रा कर, एक से टकरा दीवार जिसकी दिशा वेक्टर w द्वारा दर्शायी जाती है, जिस दिशा में आपको "स्लाइड" की आवश्यकता होती है वह वेक्टर द्वारा दी जाती है जो v का प्रक्षेपण w पर होता है। इस का उपयोग कर

v . w 
--------- w 
|w|*|w| 

जहां .vector dot product और |w| है वेक्टर w (= sqrt(w . w)) की भयावहता है पाया जा सकता है। यदि w एक इकाई वेक्टर है, यह बस

(v . w) w 

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

यदि आप चाहते हैं कि आपका प्राणी हमेशा पूरी गति से यात्रा करे, तो आपको केवल v . w के संकेत की आवश्यकता होगी - आप हमेशा यात्रा करेंगे दिशा में दीवार चेहरे (w) या विपरीत दिशा (-w)।

आपके पास यह समस्या तब होगी जब आपका प्राणी दीवार पर मर जाता है। उस स्थिति में आपका अनुमानित वेक्टर (0, 0) होगा, और आपको यह तय करने के लिए किसी अन्य तकनीक की आवश्यकता है (w या -w) जाने के लिए। यहां सामान्य दृष्टिकोण ए * है, हालांकि यदि आपके पर्यावरण में पर्याप्त संरचना है तो यह अनावश्यक हो सकता है।

की तलाश: आप जिस दिशा वर्तमान वेग और लक्ष्य

बाधा निवारण की ओर वांछित वेग के बीच अंतर है में एक स्टीयरिंग बल लागू

5

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

आप वेबसाइट पर अधिक जानकारी प्राप्त कर सकते हैं "Steering Behaviors For Autonomous Characters"

संबंध

Guillaume

पुनश्च: यह आप वस्तु के आंदोलन के लिए एक बिंदु/वेग/त्वरण विधि का उपयोग कर रहे मान।

+0

यह उत्तर होना चाहिए था। कम से कम यह एएए खेलों में प्रयुक्त सिद्ध अवधारणाओं पर आधारित है। प्लस क्रेग रेनॉल्ड्स शानदार है – MickyD

संबंधित मुद्दे