J'ai implémenté un moteur physique de jeu 3D simple. J'ai déjà une détection de collision décente en place, maintenant j'essaie de comprendre la partie réponse à la collision. J'utilise une méthode basée sur les impulsions pour calculer les vitesses post-collision. Cela fonctionne assez bien, cependant, cela n'empêche pas complètement les corps de continuer à s'interpénétrer. J'ai donc un morceau de code supplémentaire pour résoudre la pénétration. Actuellement, je déplace simplement les corps le long de la normale de contact de la moitié de la profondeur de pénétration - premier corps dans la direction de la normale de contact, deuxième corps dans la direction opposée.
C'est ok la plupart du temps, mais il y a des effets indésirables. Par exemple, imaginez un couloir étroit et un objet qui le traverse. Si l'objet frappe l'un des murs du couloir, la résolution de pénétration le déplace vers le mur opposé, puis dans le cadre suivant vers le premier mur, etc. L'effet est que l'objet vibre en quelque sorte très vite entre les murs ce qui n'est pas joli.
Ma question est donc de savoir s'il existe un meilleur moyen de résoudre la pénétration? Peut-être ne déplacez-vous pas les corps, ajustez simplement leur vitesse (en plus du calcul des impulsions) pour qu'ils arrêtent de se rapprocher et que la pénétration se résout dans les deux images suivantes. Je devine juste ici. Des idées?