Box Collider 2D 和 Polygon Collider 2D 之间的碰撞不起作用

Collision between Box Collider 2D and Polygon Collider 2D not working

目前我正在开发一款联网的 2d 平台游戏。

我的播放器是一个空的 object,作为我的实际图形等的 parent。空的 object 有一个 rigidbody (3d) 附加到它需要拥有一个以便使用 configurable joint 组件(注意:我使用这个 3d 刚性 body 移动我的播放器)。但是,播放器 body 到 child图形,有一个 box collider 2d 附在它上面,因为它毕竟是一个 2d 游戏并且必须与其他 2d objects.

碰撞

我的平台有 polygon collider 2d 附加到它们(如果值得一提的话,它连接到平台效应器)。

现在,即使我的播放器 body(对于图形来说是 child,对于我的播放器 object 来说是 child)和我的平台都有 2d colliders 在它们上面它们不会发生碰撞并且可以简单地进入彼此内部(它们都没有标记为 isTrigger)。

为了解决这个问题,我想我会在播放器 body 中添加一个 rigidbody 2D,然后看看是否会有任何效果。现在添加 rigidbody 2D 碰撞确实有效,但是一旦我制作了 rigidbody 2D 就勾选了所有位置和旋转约束,或者一旦我制作了 kinematicstatic 它将不再与我的平台发生碰撞。问题是我需要让 rigidbody 2D 成为 static 或者不能移动,因为我目前正在使用附加到它的 rigidbody (3d) 移动我的播放器 object 而不是希望玩家 body 在与 object 碰撞时有任何额外的移动。

我知道这是相当多的信息,所以如果您有任何问题或想了解更多信息,请发表评论,我会尽快回复。谢谢:-)!

编辑: 2d 射线投射也无法击中玩家 body box collider 2D

编辑 2: 回顾一下:

如果玩家 body 或平台有一个 rigidbody 2d 不是静态的(动态的)并且可以移动碰撞工作。然而,目前我的播放器 body 上只有一个 rigidbody 2D,它必须是静态的(如前所述)以及一个 box collider 2d。另一方面,我的平台目前只有 polygon collider 2d,因为我不明白为什么它需要 rigidbody 2D.

如果静态对撞机没有刚体、静态或具有运动学刚体,则它不会检测到与另一个对撞机的碰撞。您的两个对象中至少有一个不需要是静态的,并且需要有一个不是运动学的刚体才能被正确检测到。所以你需要在你的平台上添加一个 Rigidbody2D。

当您对为什么碰撞器不会与另一个碰撞器发生碰撞有疑问时,请始终参考 Unity 文档的 this page,其中总结了哪种碰撞器会与另一个碰撞器发生碰撞。

Rigidbody2D 无法与 Rigidbody3D 发生碰撞,但这里有一个解决方法

http://answers.unity3d.com/questions/580769/can-rigidbody-2d-collide-with-3d-colliders.html