Unity 碰撞系统有问题。
我正在尝试使用网格对撞机(凸网格对撞机打勾)将一些 3d 对象(岩石)添加到我的场景中,但没有刚体。我有一个带有刚体和球体对撞机的子弹预制件。我在子弹预制件上附加了一个脚本,OnCollisionEnter它应该破坏子弹预制件并播放爆炸粒子。
现在的问题是,当我将子弹射向 3d 对象(岩石)时,它会反弹而不是爆炸(也就是没有调用 OnCollisionEnter)。与其他对撞机(如盒子、胶囊或地形对撞机)一起使用就可以了。
我试图向它添加一个刚体,之后它开始工作,调用 OnCollisionEnter并且子弹爆炸,但问题是我可以用物理移动 3d 对象,这是我不应该能够的。为了解决这个问题,我尝试在检查器中限制位置和旋转,我认为这解决了我的问题,因为子弹在接触时爆炸并且3d 对象不会移动,但现在我的另一个问题是我可以穿过对象...
知道如何解决我的问题吗?这样我就会有一个带有meshcollider的3d对象,在与球体对撞机接触时调用OnCollisionEnter,但不让我通过它?
Edit1:忘了提到我已经尝试过 IsKinematic相同的规则适用,子弹弹开,但没有调用 OnCollisionEnter。
Edit2,有点解决方案:我最终复制了对象,从第二个中移除了网格渲染器,稍微缩放它并移除 Gravity 和 IsKinematic,这样该层触发 OnCollisionEnter 并且我的子弹爆炸,原件在 IsKinematic 女巫不让我穿过物体,因为另一层有点大,子弹不能反弹。尽管这似乎可行,但对我来说,这似乎有点过头了,可能会给我带来开销,有没有更好的解决方案?