ในเครื่องมือฟิสิกส์ที่ฉันกำลังพัฒนา (เพื่อการเรียนรู้) โดยใช้ความรัก -2dฉันใช้ความละเอียดการชนในลักษณะนี้:
FixedUpdate(dt) // I use fixed timestep
foreach collide c1 in allNotStaticColliders
c1.integartePhysic // i.e. apply gravitational force..
foreach collider c2 "near" c1 // "near"= I use spatial hashing
if collide(c1,c2)
resolve collision (c1,c2) // the heavy operation
collison callbacks c1
collison callbacks c2
...
อย่างที่คุณเห็นในตอนท้ายของอนิเมชั่น gif นั้นจะมีการสลายตัวของ FPS เมื่อ colliders ทั้งหมดมีการต่อสายดินเกือบเป็นวัตถุคงที่
เนื่องจากจำนวนของการแก้ปัญหาการชนกันเพิ่มขึ้นเมื่อวัตถุใช้เวลาในการสัมผัสมากกว่าเมื่อตั้ง อย่างไรก็ตามการคำนวณจำนวนมากนั้น "ไร้ประโยชน์" เพราะวัตถุได้ตัดสินให้อยู่ในตำแหน่งที่มั่นคงซึ่งกันและกันแล้ว
การปฏิบัติที่ดีที่สุดคืออะไร (หวังว่าจะไม่ต้องการระดับฟิสิกส์) เพื่อหลีกเลี่ยงการตรวจจับการชน "ไร้ประโยชน์" เหล่านี้
แก้ไข: คำแนะนำ DMGregory ที่ยอมรับแล้วมาที่ผลลัพธ์นี้ (ยังไม่เหมาะสมที่สุด)
(สีแดง = คงที่, สีน้ำเงิน = ใช้งาน, สีเขียว = นอนหลับ)