ฉันพยายามนำระบบการชนมาใช้ในเกม 2D ที่ฉันทำ ทฤษฎีแกนการแยก (ตามที่อธิบายโดยบทช่วยสอนการชนของ metanet ) ดูเหมือนจะเป็นวิธีที่มีประสิทธิภาพและมีประสิทธิภาพในการจัดการการตรวจจับการชน แต่ฉันไม่ชอบวิธีการตอบสนองการชนที่พวกเขาใช้ ด้วยการแทนที่แกนอย่างเหลื่อมซ้อนกันอย่างสุ่ม ๆ อัลกอริธึมก็เพิกเฉยตำแหน่งก่อนหน้าของวัตถุที่เคลื่อนที่ซึ่งหมายความว่ามันจะไม่ชนกับวัตถุเคลื่อนที่มากเท่าที่มันเข้ามาแล้วก็เด้งออกมา
นี่คือตัวอย่างของสถานการณ์ที่สำคัญ:
ตามวิธี SAT อธิบายข้างต้นสี่เหลี่ยมจะโผล่ออกมาจากสามเหลี่ยมตั้งฉากกับด้านตรงข้ามมุมฉากของมัน:
อย่างไรก็ตามตามความเป็นจริงสี่เหลี่ยมควรหยุดที่มุมล่างขวาของรูปสามเหลี่ยมซึ่งจะเป็นจุดที่เกิดการชนครั้งแรกถ้ามันเคลื่อนไหวอย่างต่อเนื่องตามเวกเตอร์การกระจัด:
ตอนนี้สิ่งนี้อาจไม่สำคัญในระหว่างการเล่นเกม แต่ฉันชอบที่จะรู้ว่ามีวิธีการที่มีประสิทธิภาพ ฉันเก็บสมองของฉันไว้สองสามวันที่ผ่านมาและฉันยังไม่อยากยอมแพ้!
(ข้ามโพสต์จาก StackOverflow หวังว่าจะไม่ผิดกฎ!)