首页 > 解决方案 > 如何将力传递给统一的子刚体?

问题描述

我有几个rigidBody(A,B,C)与关节连接在一起。A 是父母,B 是孩子,C 是 B 的孩子,这示意性地给出了:A-joint-B-joint-C

育儿似乎不会以任何方式影响物理学。此外,当我向 A 施加力时,B 相对于 A 旋转,C 相对于 B 旋转,那么 B 和 C 的移动就晚了。即使fixedJoint是这样,也确实不现实。即使通过增加求解器迭代次数,它仍然远远不够好。

是否有设置使施加在 A 上的力分布在 A、B 和 C 之间,以使该组像一件事一样移动?

标签: unity3dphysics

解决方案


固定关节确实使连接的对象作为一个单一的实体(具有可选限制)。但是,如果您仅对其中一个对象施加力,并且该对象的质心与整个组件的质心不在同一位置,则将(并且应该)引入旋转运动。

我能想到的两种方法:

一种是将力分成多个部分,每个部分具有相同的方向,但大小与将要施加的物体的质量成正比(总和 F = 总 F)。然后将这些力中的每一个应用于装配中的每个对象。

另一种是计算对象组合的质心,并使用ApplyForceAtPosition函数,而不是基本ApplyForce函数。

我应该提一下,我运气不好同时使用层次结构和关节将对象连接在一起。所以,如果可以的话,我建议避免让他们成为彼此的孩子。


推荐阅读