首页 > 解决方案 > 如何防止非触发碰撞器在 Unity 中相互推动?

问题描述

我从 Unity 的资产商店获得了预制的射弹,但无法找到一种方法让它们按照我的预期工作。

射弹有对撞机(不是触发器)、刚体和以 .velocity 移动它们的脚本。它使用 检测碰撞OnCollisionEnter,使它们推动具有刚体的对象(不想要的行为)。

我确实可以使用OnTriggerEnter,但是弹丸使用ContactPointfrom无法访问的OnCollisionEnter方法产生粒子。OnTriggerEnter我尝试ContactPoint使用光线投射来模拟这一点,但没有运气。可以从头开始重写代码,但前提是没有其他方法......

在这个视频中,这个家伙与我的射弹、刚体和对撞机具有相同的设置,但是,射弹并没有推动另一个物体,但他没有更深入地了解它的行为。

有任何想法吗?

标签: unity3d

解决方案


在 Edit -> Project Settings -> Physics 中,您会在底部找到 Layer Collision Matrix。在这里您可以选择哪些图层与哪些图层发生碰撞。游戏对象的默认层是“默认”。为您的射弹和您不希望与之发生碰撞的游戏对象分配一个新层。然后您可以取消选中图层碰撞矩阵中代表这两个图层的框。现在这些游戏对象在碰撞时不会相互影响,并且不会为它们调用像 OnCollisionEnter 这样的方法。希望这能完全回答你的问题。


推荐阅读