W silniku fizyki rozwijam (do nauki) za pomocą love-2d zaimplementowałem rozwiązania kolizji w następujący sposób:
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
...
Jak widać na końcu animacji gif, następuje zanik FPS, gdy wszystkie zderzaki są prawie uziemione na obiekcie statycznym.
Wynika to z faktu, że liczba rozdzielczości kolizji rośnie, gdy obiekty spędzają więcej czasu na dotykaniu podczas osiadania. Jednak wiele obliczeń jest „bezużytecznych”, ponieważ obiekty już ustabilizowały się względem siebie.
Jaka jest najlepsza praktyka (miejmy nadzieję, że nie wymaga dyplomu fizyki), aby uniknąć tych „bezużytecznych” detekcji kolizji?
Edycja: zaakceptowano wskazówki DMGregory i doszło do tego wyniku (jeszcze nie optymalny)
(Czerwony = statyczny, niebieski = aktywny, zielony = spanie)