Sie können die Möglichkeit implementieren, untergeordnete Objekte für ein Objekt zu haben (wobei untergeordnete Objekte automatisch von Änderungen an der Position / Drehung des übergeordneten Objekts betroffen sind). Wenn sie dann zusammenstoßen, wenn sie sich verriegeln sollen, machen Sie ein unsichtbares Objekt und machen beide angehängten Objekte zu ihren untergeordneten Objekten. Anstatt Transformationen (Bewegung, Rotation) auf die einzelnen Objekte anzuwenden, wenden Sie sie auf das große Objekt an, ODER Sie können weiterhin Kräfte auf die einzelnen untergeordneten Objekte anwenden, wodurch überprüft wird, ob ich ein Elternteil habe Ja, die Kraft würde an das übergeordnete Element gesendet (wodurch die Kräfte aller untergeordneten Objekte zu einem Vektor zusammengeführt würden, den es auf sich selbst anwenden würde).
Außerdem sollte dieser Ansatz ihre Rotation richtig handhaben, wenn Sie den Massenschwerpunkt für das unsichtbare Elternteil anhand der Gewichte der verriegelten Objekte berechnen, was Johns Methode nicht zu erreichen scheint (verbundene Objekte drehen sich um ihren neuen gemeinsamen Massenschwerpunkt, nicht um den Massenschwerpunkt eines der Objekte), und Sie könnten diese Art von Verhalten leicht verschachteln, ohne dass zusätzlicher Code erforderlich ist. Es scheint der robustere und flexiblere Ansatz zu sein.
+ Bedingung, wenn die auf das Kind ausgeübte Kraft stark genug ist, um das Gelenk zu brechen, und Sie das "Entriegeln" des Gelenks bewältigen können, indem Sie einfach die Eltern-> Kind-Beziehung entfernen. Wenn nur noch ein Kind übrig ist, trennen Sie es ebenfalls und entfernen auch das unsichtbare Elternteil.
Ich kann weitere Details (mit Bildern und zumindest Pseudocode und dergleichen) bereitstellen, wenn Sie interessiert sind.