Il existe trois phases de détection de collision.
Broadphase : il boucle entre tous les objecs qui peuvent interagir, les faux positifs sont autorisés, si cela accélère la boucle.
Narrowphase : détermine s'ils entrent en collision, et parfois, comment, pas de faux positifs
Résolution : résout la collision.
La question que je pose concerne la phase étroite. Il existe plusieurs algorithmes, différents en complexité et en précision.
Intersection Hitbox : il s'agit d'un algorithme a posteriori, qui a la plus faible complexité, mais n'est pas trop précis,
Intersection des couleurs : intersection Hitbox pour chaque pixel, a posteriori, pixel parfait, pas précis en termes de temps, complexité plus élevée
Théorème de l'axe de séparation : il est utilisé plus souvent, précis pour les triangles, cependant, a posteriori, car il ne peut pas trouver le bord, lors de la prise en compte de la dernière image, il est plus stable
Raycasting linéaire : l'algorithme A priori, utile pour une physique d'aspect semi-réaliste, trouve le point d'intersection, encore plus précis que SAT, mais avec plus de complexité
Interpolation spline : A priori, encore plus précise que les rayons linéaires, encore plus de coplexité.
Il y en a probablement beaucoup d'autres que j'ai oubliés. La question est de savoir quand est-il préférable d'utiliser SAT, quand les rayons, quand les splines et s'il y a quelque chose de mieux.
Cela dépend vraiment du type de jeu que vous avez. Chaque méthode ci-dessus a ses propres compromis.
Cependant, SAT est assez standard dans mon expérience pour les bibliothèques génériques de physique, Ex. Box2D l'utilise beaucoup (Angry Birds, et de nombreux autres jeux utilisent Box2D).
Les variations d'intersection de couleurs mélangées à l'intersection SAT ou Hitbox sont utilisées dans des jeux comme Sonic, Megaman avec de bons résultats.
Je ne connais cependant pas grand-chose aux n ° 4 et n ° 5.
la source