ขณะนี้ฉันกำลังทำเกมตามแบบตัวเอง (คิดว่า Terraria แต่แปลกน้อยกว่านี้ (ฉันคิดว่านั่นเป็นคำหรือไม่ขออภัยถ้าไม่ใช่)
อย่างไรก็ตามตอนนี้ฉันมีระบบตรวจจับการชนกันของข้อมูลทำงานได้ดี มีบางสิ่งที่น่ายินดีเป็นอย่างยิ่งที่ได้เห็นผีสางไม่วิ่งผ่านบล็อก แต่แล้วฉันก็มีความคิดที่จะสร้างมาตรฐาน ความคิดที่ไม่ดี
1,000 สี่เหลี่ยมไม่มีปัญหา 10,000 สแควร์สำหรับ 3 ตัวอักษรเป็นความล่าช้า 100,000 squares (แผนที่ใหญ่มาก) สำหรับ 3 ตัวละครนั้นเล่นไม่ได้
ฉันมีปัญหาที่ฉันไม่ต้องการพิจารณาบล็อกที่อยู่ไกลจากผู้เล่นตัวละครไอเท็ม ฯลฯ แต่ฉันไม่ต้องการโหลดหน่วยความจำที่เหลืออยู่เหล่านั้นอย่างต่อเนื่อง
นี่คืออัลกอริทึมของฉันจนถึงตอนนี้อย่าลังเลที่จะวิจารณ์
foreach (Block in level)
{
if (distance from block to player > a specified amount)
ignore this block;
else
{
get the intersection depth between the two bounding boxes
if (depth of intersection != Zero-vector)
{
check y size vs x size
resolve on smallest axis
}
}
}
ดังที่คุณจะทราบเมื่อขนาดของเลเวลใหญ่ขึ้นลำดับของอัลกอริทึมนี้จะเพิ่มขึ้นตามบล็อค N ฉันไม่ต้องการพิจารณาบล็อกที่ไม่ได้อยู่ใกล้กับผู้เล่น
ฉันคิดว่าอาจจะใช้ (0,0) ถึง (mapWidth, mapHeight) สองแถวของบล็อกแทนที่จะเป็นรายการคำนวณเขตอันตรายขึ้นอยู่กับตำแหน่งของบุคคลเช่นถ้าตำแหน่งผู้เล่นอยู่ที่ (10, 20) มันจะดูจาก (0, 10) ถึง (20, 30) หรืออื่น ๆ
ความคิดและการพิจารณาใด ๆ ที่ยอดเยี่ยมขอบคุณ