【问题标题】:How to transmit a force to child rigid bodies in unity?如何将力传递给统一的子刚体?
【发布时间】:2020-03-25 05:13:04
【问题描述】:

我有几个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 之间,以使该组像一件事一样移动?

【问题讨论】:

    标签: unity3d physics


    【解决方案1】:

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

    我能想到的两种方法:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 2014-07-24
      相关资源
      最近更新 更多