使用OnCollisionEnter()检测到不存在的冲突

时间:2019-06-03 11:00:27

标签: c# unity3d

我正在尝试使用OnCollisionEnter()通过在碰撞时禁用其刚体来制造手榴弹。但是,OnCollisionEnter()会在没有明显碰撞发生时触发,如您在此图中看到的:

enter image description here

这会使我的手榴弹留在空中。我怀疑这是由于物理循环与渲染循环之间缺乏同步。而且,我的标准“不粘手榴弹”使用相同的模型并且运行良好。

我已经尝试了以下方法:

  • 确认没有其他对撞机可能引起我的手榴弹 “坚持下去”

  • 改为使用OnTriggerEnter()。结果要好一些,但问题是,一旦手榴弹进入障碍物或敌人内部,它就会开火太晚。

  • 为所有对象添加刚体和连续碰撞检测

  • 将PhysicsManager.DefaultContactOffset从0.01调整为0.001,由Eliasar建议

  • 从“ PCM”切换到“传统联系人生成”

这些都不起作用,所以我感到有些绝望。预先感谢您的帮助!

我在碰撞时将手榴弹粘在上面的代码:

void OnCollisionEnter(Collision c) {
   rigidbody.isKinematic = true;
   transform.parent = c.transform;
}

0 个答案:

没有答案