คำถามติดแท็ก line-of-sight

7
ฉันจะป้องกันไม่ให้การเคลื่อนที่ในแนวทแยงสำรวจแผนที่มากขึ้นได้ไหม?
ในกริดแบบเรียงต่อกันที่การเคลื่อนที่ใน 8 ทิศทางใช้เวลาเลี้ยวเท่ากัน (กฎสไตล์กระดานหมากรุก) ฉันสามารถป้องกันการเคลื่อนที่ในแนวทแยงจากการแสดงไทล์ใหม่มากกว่าการเคลื่อนไหวแบบมุมฉากได้หรือไม่? ตัวอย่างเช่นคุณเป็นกล่องสีแดงในภาพด้านล่าง คุณจะเห็นเซลล์สีเขียวในปัจจุบัน (มุมมองสี่เหลี่ยมจัตุรัส) คุณสามารถย้ายระยะห่างของไทล์ใด ๆ ในแปดทิศทางใดก็ได้ หากคุณย้ายไปทางตะวันออกเฉียงเหนือคุณจะสำรวจกระเบื้องใหม่ 13 รายการ (แสดงเป็นสีน้ำเงิน) หากคุณย้ายไปทางใต้คุณจะสำรวจกระเบื้องใหม่ 7 รายการเท่านั้น (แสดงเป็นสีม่วง) ฉันจะทำให้การเดินทางในแต่ละทิศทางดีเท่า ๆ กันสำหรับการสำรวจได้อย่างไร

4
การค้นหาแผ่นที่ไม่ได้แยกในเกมแบบเรียงต่อกัน
ฉันกำลังทำงานกับเกมแบบเรียงต่อกันสองมิติและตอนนี้ฉันกำลังพยายามทำให้ไดรฟ์ข้อมูลเงาเทียบเท่ากับ 2d ฉันมีปัญหาในการหาพื้นผิวที่ควรจะเป็นเงา จากจุดใด ๆ ในเกมฉันต้องหาทั้งใบหน้าที่ยังไม่ได้แยกหรือกระเบื้องทั้งหมด คำถามของฉันคือฉันจะหาจุดตัด / ขอบเหล่านี้ได้เร็วที่สุดเท่าที่จะเป็นไปได้หรือไม่?

2
สายตาในแนวทแยงมุมมีสองมุม
ตอนนี้ฉันกำลังใช้อัลกอริธึมของ Bresenham สำหรับการมองเห็น ปัญหาคือฉันได้พบเคสที่ผู้เล่นสามารถมองทะลุกำแพงได้ เกิดขึ้นเมื่อผู้เล่นดูระหว่างสองมุมของกำแพงที่มีช่องว่างในอีกด้านหนึ่งในมุมที่เฉพาะเจาะจง ผลลัพธ์ที่ฉันต้องการคือการเรียงต่อกันระหว่างผนังทั้งสองจะมีการทำเครื่องหมายไม่ถูกต้องเช่นกัน วิธีใดที่เร็วที่สุดในการแก้ไขอัลกอริทึมของ Bresenham เพื่อแก้ปัญหานี้ หากไม่มีทางออกที่ดีจะมีอัลกอริทึมที่เหมาะสมกว่าหรือไม่ ยินดีต้อนรับความคิดใด ๆ โปรดทราบว่าการแก้ปัญหาควรจะรองรับ 3d ได้ด้วย แก้ไข: ทางออกที่ง่ายของฉันคือการตรวจสอบว่าทั้งสองมุมถูกปิดหรือไม่เมื่อพิกัด x และ y เปลี่ยนไป สำหรับซอร์สโค้ดที่ใช้งานได้และการสาธิตเชิงโต้ตอบของผลิตภัณฑ์ที่สมบูรณ์โปรดดูที่http://ashblue.github.io/javascript-pathfinding/

2
วิธีที่มีประสิทธิภาพมากขึ้นในการติดตั้ง Line of sight บนตาราง 2d ด้วยการฉายรังสี?
พิจารณาตารางไพ่แบบ 2d และขอบเขตของพิกัดโดยประมาณ - ซึ่งอยู่กึ่งกลางผู้เล่น - ซึ่งแสดงถึงเส้นสายตา เป้าหมายคือเพื่อป้องกันสายตาที่มองข้ามสิ่งกีดขวาง (เช่นกำแพง) มันค่อนข้างง่ายที่จะตรวจสอบว่ามีเซลล์ใดในขอบเขตของสายตาที่มองเห็นหรือไม่: ฉายรังสีจากผู้เล่นไปยังเซลล์เป้าหมายโดยใช้Bresenham's - หากหนึ่งในเซลล์ที่ทับซ้อนกันระหว่างผู้เล่นและเป้าหมายนั้นเป็นอุปสรรคเซลล์เป้าหมาย ไม่สามารถมองเห็นได้ ตอนนี้ความคิดแรกของฉันคือการวนซ้ำไปตามเซลล์กริดทั้งหมดในแนวสายตา - แต่ดูเหมือนว่าจะไม่มีประสิทธิภาพสำหรับฉัน ตัวอย่างเช่นหากผู้เล่นยืนอยู่ติดกับกำแพงและคุณกำหนดว่ามองไม่เห็นเซลล์ที่อยู่นอกกำแพงคุณสามารถระบุเซลล์ทั้งหมดบนรังสีหลังจากนั้นจะมองไม่เห็น นอกจากนี้ยังพิจารณาการส่งรังสีไปยังแต่ละเซลล์ตามแนวรัศมีของสายตาและวนเซลล์แต่ละเซลล์ตามแต่ละรังสี - แต่ฉันจะทำการประมวลผลเซลล์มากกว่าหนึ่งครั้ง มีวิธีที่มีประสิทธิภาพมากกว่านี้ไหม ในขณะที่วนซ้ำ ~ 50 เซลล์ต่อเทิร์นคือการคำนวณที่ค่อนข้างเบาฉันจะเร่งความเร็ว - เป้าหมายคือสามารถหมุนเวียนรอบ ๆ ไม่กี่รอบต่อวินาทีในการเล่นอัตโนมัติ ดังนั้นยิ่งฉันมีประสิทธิภาพมากเท่าไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.