C# 检测到与OnCollisionCenter()不存在的冲突
我试图通过使用C# 检测到与OnCollisionCenter()不存在的冲突,c#,unity3d,C#,Unity3d,我试图通过使用onCollisionCenter()在碰撞时禁用其刚体来制作粘性手榴弹。但是,OnCollisionCenter()在明显没有发生碰撞时激发,如下图所示: 这导致我的手榴弹粘在空中。我怀疑这是由于物理循环和渲染循环之间缺乏同步。此外,我的标准“非粘性”手榴弹使用相同的型号&工作良好 我已经尝试了以下方法: 确认没有其他可能导致我手榴弹爆炸的对撞机 “悬而未决” 改用OnTriggerEnter()。结果稍微好一点,但问题是发射太迟,只有在手榴弹进入障碍物或敌人内部时才发射 将
onCollisionCenter()
在碰撞时禁用其刚体来制作粘性手榴弹。但是,OnCollisionCenter()
在明显没有发生碰撞时激发,如下图所示:
这导致我的手榴弹粘在空中。我怀疑这是由于物理循环和渲染循环之间缺乏同步。此外,我的标准“非粘性”手榴弹使用相同的型号&工作良好
我已经尝试了以下方法:
- 确认没有其他可能导致我手榴弹爆炸的对撞机 “悬而未决”
- 改用
。结果稍微好一点,但问题是发射太迟,只有在手榴弹进入障碍物或敌人内部时才发射OnTriggerEnter()
- 将刚体和连续碰撞检测添加到所有对象
- 按照Eliasar的建议,将PhysicsManager.DefaultContactOffset从0.01调整为0.001
- 从“PCM”切换到“传统触点生成”
void OnCollisionEnter(Collision c) {
rigidbody.isKinematic = true;
transform.parent = c.transform;
}
你有没有做过任何
Debug.Log
'ing来查看它与哪些游戏对象发生冲突?此外,如果您想让transfrom.parent=c.transform
正好贴在它碰到的地方,您可以尝试注释掉它,否则您将把它移到它碰撞的对象的中心。您好,谢谢您的回答。我确实试过一些调试日志,但手榴弹确实与障碍物相撞了。我也试着对父母的话进行了评论,但不幸的是没有起到任何作用。你的粘手榴弹是另一个游戏对象的孩子吗?不是。此外,手榴弹与敌人的碰撞是正确的,因此我怀疑问题出在钝体一侧,而不是手榴弹本身