unity3d - 如何将力传递给统一的子刚体?
问题描述
我有几个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 之间,以使该组像一件事一样移动?
解决方案
固定关节确实使连接的对象作为一个单一的实体(具有可选限制)。但是,如果您仅对其中一个对象施加力,并且该对象的质心与整个组件的质心不在同一位置,则将(并且应该)引入旋转运动。
我能想到的两种方法:
一种是将力分成多个部分,每个部分具有相同的方向,但大小与将要施加的物体的质量成正比(总和 F = 总 F)。然后将这些力中的每一个应用于装配中的每个对象。
另一种是计算对象组合的质心,并使用ApplyForceAtPosition
函数,而不是基本ApplyForce
函数。
我应该提一下,我运气不好同时使用层次结构和关节将对象连接在一起。所以,如果可以的话,我建议避免让他们成为彼此的孩子。
推荐阅读
- javascript - 使用 Discord 机器人 (JavaScript) 提及用户
- c# - 有没有办法让 C# 中的方法“超时”?
- javascript - 为什么此时 diff 函数返回 0 而不是 1
- node.js - 在另一个任务中使用 gulp 任务输出
- sql - SQL 表连接
- sql - 根据城市计算订单数量
- gulp - bower install - 找不到模块“tough-cookie”
- wordpress - 受WordPress保护的页面仅可使用一次
- c# - 如何在c#monogame中制作一个计时的计时器
- ruby-on-rails - Rails 6 ActionController::TestCase 存根控制器方法