Supposons que j'utilise un système de détection de collision discret simple où je déplace tous les objets, puis vérifie les collisions. Je veux que tous les objets entrant en collision soient séparés (bien sûr) et affectés des vitesses de réponse appropriées (rebond, glissement, arrêt, etc.).
Lorsque j'ai une paire d'objets en collision, comment les séparer sans me retrouver avec l'un ou les deux en collision avec d'autres objets?
La seule façon d'éviter que cela ne se produise est d'empêcher la pénétration en premier lieu. Avant de déplacer un objet, vous devez vous assurer qu'il s'agit d'un mouvement légal. Notez que cela signifie que vous devez déplacer vos objets un par un pour éviter que deux objets ne se déplacent l'un dans l'autre.
Si aucune pénétration ne se produit, vous n'avez à réinitialiser aucune position et vous ne déclencherez donc aucune pénétration secondaire.
la source
Ce que je fais habituellement est le suivant:
Lorsque vous séparez des objets et que vous vous retrouvez avec plus de collisions, vous recommencez simplement, jusqu'à ce qu'un nombre maximum d'étapes soit atteint ou que les objets pénètrent moins qu'un seuil prédéfini.
la source