Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何将力传递给统一的子刚体?_Unity3d_Physics - Fatal编程技术网

Unity3d 如何将力传递给统一的子刚体?

Unity3d 如何将力传递给统一的子刚体?,unity3d,physics,Unity3d,Physics,我有几个刚体(A、B、C)与关节连接在一起。 A是父对象,B是子对象,C是B的子对象,示意图给出了:A-joint-B-joint-C 为人父母似乎对物理学没有任何影响。 另外,当我给a加一个力,B相对于a旋转,C相对于B旋转,那么B和C的移动都比较晚。即使使用fixedJoint,这也是不现实的。即使通过增加解算器迭代次数,它仍然远远不够好 是否有一个设置,使施加到a的力分布在a、B和C之间,使组像一件事一样移动?固定关节确实使连接的对象充当单个实体(具有可选限制)。但是,如果仅对其中一个对象

我有几个
刚体
(A、B、C)与关节连接在一起。 A是父对象,B是子对象,C是B的子对象,示意图给出了:A-joint-B-joint-C

为人父母似乎对物理学没有任何影响。 另外,当我给a加一个力,B相对于a旋转,C相对于B旋转,那么B和C的移动都比较晚。即使使用
fixedJoint
,这也是不现实的。即使通过增加解算器迭代次数,它仍然远远不够好


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

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

我可以想到两种方法:

一种方法是将力分成多个部分,每个部分具有相同的方向,但大小与它将应用到的对象的质量成比例(总和F=总F)。然后将这些力应用于部件中的每个对象

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


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

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

我可以想到两种方法:

一种方法是将力分成多个部分,每个部分具有相同的方向,但大小与它将应用到的对象的质量成比例(总和F=总F)。然后将这些力应用于部件中的每个对象

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

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