【问题标题】:Unity - handle OnCollision on child's RigidbodyUnity - 在孩子的刚体上处理 OnCollision
【发布时间】: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 所以这是没有选择的。但是您可以尝试使用单独的 Rigidbody s,然后使用 Joints 将它们连接在一起。我想在这种情况下,尤其是 FixedJoint 会引起您的兴趣。

标签: unity3d scripting


【解决方案1】:

我不知道您为什么要检测 Pill 级别的碰撞,但要保留相同的配置,您可以访问的一件事是 Collision ContactPoint

【讨论】:

  • Pill 碰撞要求的原因是因为我想在 Pill 与特定 GameObject 类型碰撞时更改它的颜色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多