Ich habe eine einfache 3D-Spielphysik-Engine implementiert. Ich habe bereits eine anständige Kollisionserkennung eingerichtet, jetzt versuche ich, den Teil der Kollisionsreaktion herauszufinden. Ich verwende eine impulsbasierte Methode, um die Geschwindigkeiten nach der Kollision zu berechnen. Dies funktioniert ziemlich gut, verhindert jedoch nicht vollständig, dass sich die Körper weiter gegenseitig durchdringen. Ich habe also zusätzlichen Code, um das Eindringen zu beheben. Derzeit bewege ich die Körper nur entlang der Kontaktnormalen um die Hälfte der Eindringtiefe - erster Körper in Richtung der Kontaktnormalen, zweiter Körper in entgegengesetzter Richtung.
Dies ist die meiste Zeit in Ordnung, aber es gibt einige unerwünschte Effekte. Stellen Sie sich zum Beispiel einen engen Korridor und ein Objekt vor, das sich durch ihn bewegt. Wenn das Objekt auf eine der Wände des Korridors trifft, verschiebt die Durchdringungsauflösung es in die gegenüberliegende Wand, dann im nächsten Bild zurück in die erste Wand und so weiter. Der Effekt ist, dass das Objekt zwischen den Wänden sehr schnell vibriert, was nicht schön ist.
Meine Frage ist also, ob es einen besseren Weg gibt, um das Eindringen zu beheben. Vielleicht bewegen Sie die Körper nicht, sondern passen ihre Geschwindigkeiten (zusätzlich zur Impulsberechnung) an, damit sie sich nicht mehr aufeinander zu bewegen und die Penetration sich in den nächsten paar Bildern von selbst auflöst. Ich rate nur hier. Irgendwelche Ideen?