团结 |如何让多个 objects 与复合碰撞检测一起工作?

Unity | How to get multiple objects with Compound Collision Detection to work?

我目前正在尝试使用碰撞检测来选择目标(自动攻击)。我有两个 object(即一个玩家和一个塔),每个游戏 object 都有一个 object 层次结构:

在这里,object 有一个:

基于此,我已将每个 child object 设置为具有球体碰撞器,并设置为与球体类型对应的图层。下面是当前正在使用的物理碰撞table。我只希望 HitBox 层和目标层相互交互。

尽管我尽了最大努力,当 运行 游戏和让玩家在球体中来回走动时,OnTriggerEnter() 从未被调用。此方法位于 parent 游戏 object 中的玩家和塔 类 中。目前我在玩家或塔上都没有刚体,但在玩家和塔的命中球体上都有触发器以相互触发 OnTriggerEnter().

到目前为止我已经尝试过:

最后,这是两个 object 碰撞的图像,每个都在彼此的范围内,但不调用彼此的 OnTriggerEnter()。圆柱体轮廓来自 NavMeshAgent 控制器,我也尝试将其删除并进行测试,但也无济于事。 :(

TL;DR:尝试对多个游戏进行复合碰撞检测 object 无济于事。

答案实际上隐藏在您的问题中。

从 Unity 文档中找到 here

Note: Both GameObjects must contain a Collider component. One must have Collider.isTrigger enabled, and contain a Rigidbody. If both GameObjects have Collider.isTrigger enabled, no collision happens. The same applies when both GameObjects do not have a Rigidbody component.

但是根据你的 post:

Currently I have no rigidbody on either the player or the tower, but do have triggers on both of the both the player's and tower's hit spheres to trigger each others OnTriggerEnter().

所以,最快的解决办法听起来像是给你的塔添加一个刚体。您也可以为您的玩家添加一个,但要确保您的碰撞矩阵将玩家排除在环绕的触发球体碰撞器之外。

最后,根据文档,触发器不会被另一个触发器触发。

解决这些问题,您应该会看到预期的行为。