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