love-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の減衰があります。
これは、オブジェクトが落ち着くまでの接触時間を長くすると、衝突解決の数が増えるためです。ただし、オブジェクトはすでに互いに安定した位置に落ち着いているため、計算の多くは「役に立たない」ものです。
これらの「役に立たない」衝突検出を回避するためのベストプラクティスは何ですか(できれば物理学の学位を必要としないでしょう)。
編集:DMGregoryのヒントを受け入れ、この結果になります(まだ最適ではありません)
(赤=静的、青=アクティブ、緑=スリープ)