मैं एक Roguelike में दृश्य समरूपता के क्षेत्र को कैसे सुनिश्चित कर सकता हूं?


10

मैं एक Roguelike पर काम कर रहा हूं, और इसके लिए मैंने एक किरण-अनुरेखण / कास्टिंग फ़ील्ड-ऑफ-व्यू (FoV) एल्गोरिथ्म बनाया है, जिसमें एक ठोस सर्कल में हर बिंदु पर ब्रेसेनहम लाइनों की साजिश रचने शामिल हैं। यह विरूपण साक्ष्य मुक्त (और यथोचित रूप से कुशल) है, लेकिन यह मेरी एक महत्वपूर्ण आवश्यकता को याद कर रहा है: समरूपता (यदि आप एक राक्षस को देख सकते हैं, तो यह भी आपको देखने में सक्षम होना चाहिए)।

यहाँ छवि विवरण दर्ज करें

यहां मेरे कोड के गैर-सममित व्यवहार का एक उदाहरण है। बाईं छवि में मैं एक कोने (लाल 'X' ब्लॉक = दीवार) में खड़ा हूं। मैं शीर्ष दाईं टाइलें देखने में सक्षम हूं। हालाँकि, अगर मैं उन टाइलों (राइट इमेज) में से किसी एक पर जाता हूं, तो मैं अब उस टाइल को नहीं देख सकता हूं जहां से मैं आया था।

मुझे लगता है कि मैं पर्मिसिव फील्ड ऑफ़ व्यू के एक रूप के बाद हो सकता हूं , लेकिन केवल इसलिए कि रोग्यूबेसिन लेख ने सुझाव दिया कि इसे सहानुभूति के लिए अनुमति दी गई थी। क्या समरूपता प्राप्त करने के लिए वैकल्पिक साधन हैं?


1
बस यह सुनिश्चित करें कि जिस बिंदु पर आप दृश्यता की जांच कर रहे हैं, किरण को उसी स्थिति में रखें।
MichaelHouse

जवाबों:


8

ऐसा लगता है कि आप एक वर्ग को शामिल करते हैं जब आप इसमें किसी भी बिंदु को देख सकते हैं, जबकि आंख एकल निश्चित बिंदु पर होती है।

हालांकि, आपको केवल एक वर्ग शामिल करना चाहिए जब आप इसके बीच में देख सकते हैं ("आंख" भी बीच में है)। या आप शुरुआती वर्ग के प्रत्येक कोने से परीक्षण किए गए वर्ग के कोनों तक किरणें खींच सकते हैं, यदि आप किसी भी से देख सकते हैं तो शामिल करें।

प्रमुख बिंदु यह है कि एक वर्ग का हिटबॉक्स उन सभी स्थानों पर भी होना चाहिए जहां आंख होनी चाहिए।

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