ฉันกำลังพัฒนาเอ็นจิ้นเกม 2D ขนาดเล็ก ตัวละครมีวิธีทาสีซึ่งปัจจุบันทำดังต่อไปนี้:
- คำนวณตำแหน่งใหม่ของตัวละครตามความเร็ว ฯลฯ
- อัปเดตเซลล์กริดการชน **
- วาดตัวละครที่ตำแหน่งใหม่
** ฉันได้สร้างตารางการชนกันเพื่อลดจำนวนการตรวจสอบทางแยก
ตอนนี้อัลกอริทึมพื้นฐานที่ฉันคิดว่าตรวจจับการชนกันคือ:
For Each Character
Check intersection with characters in surrounding 8 cells
ฉันสามารถวางรหัสนี้ในวิธีการทาสี แต่นี่คือปัญหาที่ฉันคาดหวัง
สมมติว่าอักขระสองตัว A และ B อยู่ในเซลล์ที่อยู่ติดกันในตารางการชนกัน ตอนนี้ตามอัลกอริทึมข้างต้นในการวนซ้ำของอักขระ A มันจะตรวจพบว่ามันชนกับ B ในการวนซ้ำสำหรับอักขระ B มันจะตรวจจับว่ามันชนกับ A
แต่ฉันมีความคิดว่าเมื่อ A ตรวจพบว่ามันชนกับ B มันควรแจ้ง B ว่ามันชนกับ A นี่จะช่วยประหยัดการเปรียบเทียบได้มากเมื่อมีนักแสดงมากกว่า 2 คนชนกัน แต่ฉันไม่แน่ใจว่าจะจัดการเรื่องนี้อย่างไร ฉันคิดว่าแทนที่จะตรวจสอบการชนกันของตัวละครทุกตัวฉันควรตรวจสอบการชนภายในวงเกม
วิธีนี้จะถูกต้องหรือไม่ คุณจัดการปัญหาแบบนี้ได้อย่างไร ฉันคิดถึงสิ่งที่ตารางการชนกันของตัวเอง มีทางเลือกอื่นในการชนตรรกะของตารางหรือไม่