Как передать силу детским твердым телам в единстве? - PullRequest
1 голос
/ 22 марта 2020

У меня есть несколько rigidBody (A, B, C), соединенных вместе с суставами. A является родителем, B является его дочерним элементом, а C является дочерним по отношению к B, что схематически дает следующее: A-joint-B-joint- C

Воспитание, кажется, не влияет на физику в любом манера. Также, когда я добавляю силу к А, В вращается относительно А и C вращается относительно В, тогда ходы В и C запаздывают. Даже с fixedJoint, что на самом деле нереально c. Даже при увеличении счетчика итераций решателя все равно это далеко не так.

Есть ли параметр, позволяющий распределить силу, прикладываемую к A, между A, B и C, чтобы группа двигалась как одна вещь?

1 Ответ

0 голосов
/ 24 марта 2020

Фиксированные соединения позволяют соединенным объектам действовать как единое тело (с дополнительными ограничениями). Однако, если вы примените силу только к одному из этих объектов, И центр масс этого объекта не находится в том же положении, что и центр масс полной сборки, вращательное движение будет (и СЛЕДУЕТ) вводиться.

Два способа, которыми я могу обдумать это:

Один из них - разделить силу на несколько частей, каждая с одинаковым направлением, но величина пропорциональна массе объекта, к которому он будет применен (Сумма F = Всего F). Затем примените каждую из этих сил к каждому из ваших объектов в сборке.

Другой способ - вычислить центр масс вашей сборки объектов и использовать функцию ApplyForceAtPosition. , а не функция basi c ApplyForce.

Я должен отметить, что мне не повезло, используя ОБА иерархию, И соединения для соединения объектов вместе. Поэтому я бы посоветовал не делать их детьми друг друга, если можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...