Dans un moteur physique que je développe (pour apprendre) en utilisant love-2d , j'ai implémenté des résolutions de collision de cette manière:
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
...
Comme vous pouvez le voir à la fin de l'animation gif, il y a une décroissance FPS lorsque tous les collisionneurs sont presque mis à la terre sur un objet statique.
En effet, le nombre de résolutions de collision augmente à mesure que les objets passent plus de temps à se toucher lorsqu'ils s'installent. Cependant, de nombreux calculs sont "inutiles" car les objets se sont déjà installés dans des positions stables les uns contre les autres.
Quelle est la meilleure pratique (si tout va bien n'exige pas un diplôme de physique) pour éviter ces détections de collision "inutiles"?
Edit: astuces DMGregory acceptées et arriver à ce résultat (pas encore optimal)
(Rouge = statique, Bleu = actif, Vert = endormi)