Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测到与OnCollisionCenter()不存在的冲突_C#_Unity3d - Fatal编程技术网

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
正好贴在它碰到的地方,您可以尝试注释掉它,否则您将把它移到它碰撞的对象的中心。您好,谢谢您的回答。我确实试过一些调试日志,但手榴弹确实与障碍物相撞了。我也试着对父母的话进行了评论,但不幸的是没有起到任何作用。你的粘手榴弹是另一个游戏对象的孩子吗?不是。此外,手榴弹与敌人的碰撞是正确的,因此我怀疑问题出在钝体一侧,而不是手榴弹本身