Angenommen, ich verwende ein einfaches diskretes Kollisionserkennungssystem, bei dem ich alle Objekte bewege und dann auf Kollisionen überprüfe. Ich möchte, dass kollidierende Objekte (natürlich) getrennt und mit geeigneten Reaktionsgeschwindigkeiten (Abprallen, Gleiten, Stoppen usw.) versehen werden.
Wie trenne ich zwei kollidierende Objekte, ohne dass eines oder beide mit anderen Objekten kollidieren?
Die einzige Möglichkeit, dies zu verhindern, besteht darin, das Eindringen überhaupt zu verhindern. Bevor Sie ein Objekt verschieben, stellen Sie sicher, dass es sich um eine legale Verschiebung handelt. Beachten Sie, dass dies bedeutet, dass Sie Ihre Objekte einzeln verschieben müssen, um zu vermeiden, dass zwei Objekte ineinander verschoben werden.
Wenn keine Penetration auftritt, müssen Sie keine Positionen zurücksetzen und lösen somit keine sekundären Penetrationen aus.
quelle
Was ich normalerweise mache, ist das Folgende:
Wenn Sie Objekte trennen und mehr Kollisionen auftreten, iterieren Sie einfach erneut, bis eine maximale Anzahl von Schritten erreicht ist oder die Objekte weniger als einen vordefinierten Schwellenwert durchdringen.
quelle