ฉันจะมั่นใจได้ว่ามุมมองสมมาตรใน Roguelike ได้อย่างไร


10

ฉันกำลังทำงานกับ Roguelike และสำหรับฉันฉันได้สร้างอัลกอริทึมการติดตามเรย์ / การคัดเลือกนักแสดงมุมมอง (FoV) ซึ่งประกอบด้วยการพล็อตเส้น Bresenham ทุกจุดในวงกลมที่เป็นของแข็ง มันเป็นสิ่งประดิษฐ์ฟรี (และมีประสิทธิภาพพอสมควร) แต่มันขาดความต้องการที่สำคัญของฉัน: สมมาตร (ถ้าคุณเห็นสัตว์ประหลาดมันจะต้องสามารถเห็นคุณได้ด้วย)

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือตัวอย่างของพฤติกรรมที่ไม่สมมาตรของรหัสของฉัน ในภาพด้านซ้ายฉันยืนอยู่ที่มุมหนึ่ง (บล็อก 'X' สีแดง = กำแพง) ฉันเห็นกระเบื้องด้านบนขวา อย่างไรก็ตามหากฉันย้ายไปที่หนึ่งในกระเบื้องเหล่านั้น (ภาพขวา) ฉันจะไม่เห็นไทล์ที่มาจากอีกต่อไป

ฉันคิดว่าฉันอาจจะอยู่ในรูปแบบของเขตข้อมูลที่อนุญาตแต่เนื่องจากบทความ Roguebasin แนะนำว่าอนุญาตให้มีความสมมาตร มีทางเลือกอื่นในการทำให้สมมาตรไหม?


1
เพียงแค่ให้แน่ใจว่าจุดสายตาอยู่ในตำแหน่งเดียวกับตำแหน่งที่คุณกำลังทำการฉายรังสีเมื่อทำการทดสอบทัศนวิสัย
MichaelHouse

คำตอบ:


8

ดูเหมือนว่าคุณจะรวมสี่เหลี่ยมจัตุรัสเมื่อคุณเห็นจุดใด ๆ ในนั้นขณะที่ตาอยู่ที่จุดตรึงเดียว

อย่างไรก็ตามคุณควรรวมสี่เหลี่ยมเมื่อคุณสามารถเห็นตรงกลางของมัน (สมมติว่า "ตา" ยังอยู่ตรงกลาง) หรือคุณสามารถวาดรังสีจากแต่ละมุมของสี่เหลี่ยมเริ่มต้นไปยังมุมของสี่เหลี่ยมทดสอบถ้าคุณสามารถมองเห็นได้จากส่วนใดส่วนหนึ่งของส่วนนั้น

จุดสำคัญคือ hitbox ของสแควร์ควรเป็นสถานที่ทั้งหมดที่ตาต้องเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.