【发布时间】:2020-04-06 14:22:54
【问题描述】:
我有一个游戏对象,由一堆药丸构成,每个药丸基本上由两个球体和一个圆柱体构成。 所以 GameObject 层次结构看起来像这样:
- 玩家(空游戏对象)
- 药丸(空游戏对象)
- 球体(3D 球体)
- 圆柱体(3D圆柱体)
- 球体(3D 球体)
- 药丸(空游戏对象)
希望这张图片能让你们直观地了解 GameObject 的外观:
现在,我的目标是将整个 GameObject - Player 设为 Rigidbody,同时我想检测 Pill 级别的碰撞。因此,我将Rigidbody 添加到Player,并将Capsule collider 添加到每个Pill。但是这样的配置不起作用 - Pill 没有收到OnCollisionEnter 事件。我找到了suggestion solution,但它对我也不起作用——如果我设置Capsule collider 属性Is Trigger,那么Player 不会与其他刚体交互。到目前为止,唯一的解决方案I found 是将Rigidbody 添加到每个Pill,但我担心这种情况下的性能。
总而言之-我的问题是-我可以拥有上述配置-父刚体,子对撞机工作并接受OnCollision事件吗?当然,如果我可以拥有父刚体和设置Is Trigger 的孩子也可以在 Player 保持刚体物理行为的情况下工作。
【问题讨论】:
-
Afaik 碰撞总是在
Rigidbody级别处理,因此只要您有一个Rigidbody父对象,OnCollisionXY就会在那里触发,而不是在每个 Collider 上单独触发。 Afaik 你也不应该嵌套Rigidbody所以这是没有选择的。但是您可以尝试使用单独的Rigidbodys,然后使用 Joints 将它们连接在一起。我想在这种情况下,尤其是FixedJoint会引起您的兴趣。