Вы могли бы реализовать возможность иметь дочерние объекты для объекта (где на дочерние объекты автоматически влияют изменения в положении / ротации родителя). Затем при столкновении, когда они должны соединиться вместе, вы создаете невидимый объект и делаете оба прикрепленных объекта его дочерними. Затем, вместо применения преобразований (движение, вращение) к отдельным объектам, вы применяете его к большому объекту, ИЛИ вы все равно можете применить силы к отдельным дочерним объектам, что будет проверять «есть ли у меня родитель?», И если да, сила будет отправлена родителю (который объединит силы всех дочерних объектов в один вектор, который будет применяться к себе).
Кроме того, этот подход должен правильно обрабатывать их вращение, если вы вычисляете центр масс для невидимого родителя в соответствии с весами защелкивающихся объектов, что, по-видимому, не выполняется методом Джона (объединенный объект вращается вокруг своего нового общего центра масс, а не вокруг центра масс одного из объектов), и вы можете легко внедрить этот тип поведения без какого-либо дополнительного кода. Кажется, это более надежный и гибкий подход.
+ условие, если сила, приложенная к ребенку, достаточно сильна, чтобы разорвать сустав, и вы можете справиться с «отпиранием» его, просто удалив родитель-> дочерние отношения. Если остался только один ребенок, вы также разделяете его и удаляете также невидимого родителя.
Я могу предоставить более подробную информацию (с фотографиями и, по крайней мере, псевдокод и тому подобное), если вам интересно.