C# 为什么OnCollisionCenter没有被触发?

C# 为什么OnCollisionCenter没有被触发?,c#,unity3d,C#,Unity3d,我有两个目标: 对象一个虚拟现实摄影机: 具有启用了运动学的刚体。 已启用触发器的长方体碰撞器。 具有带有OnCollisionCenter方法的脚本。 对象B全球模型: 具有启用了触发器的球体碰撞器。 我确保对撞机的范围正确,但不知何故,OnCollisionCenter方法没有被触发 我用于OnCollisionCenter的代码如下所示: private void OnCollisionEnter(Collision collision) { Debug.Log("Collisio

我有两个目标:

对象一个虚拟现实摄影机:

具有启用了运动学的刚体。 已启用触发器的长方体碰撞器。 具有带有OnCollisionCenter方法的脚本。 对象B全球模型:

具有启用了触发器的球体碰撞器。 我确保对撞机的范围正确,但不知何故,OnCollisionCenter方法没有被触发

我用于OnCollisionCenter的代码如下所示:

private void OnCollisionEnter(Collision collision)
{
    Debug.Log("Collision entered");
}
有人能给我一些见解/建议吗

感谢转发。

问题:任何物体与触发器之间都不会发生碰撞 要了解碰撞是如何工作的,首先需要确定哪些对象正在碰撞,因为很少有对象会触发碰撞

根据您的描述,我们可以确定两种类型的对象

对象A:运动学刚体触发碰撞器 对象B:静态触发碰撞器

如果您检查,则可能不会与同时触发对象a和对象B的任何对象发生碰撞,因此OnCollisionCenter不会触发。 我重复一遍:不管另一个物体是什么,触发器都不会与任何物体碰撞

解决方案:使用OnTiggerCenter而不是OnCollisionCenter 如果希望从与触发器对象或其中两个对象的碰撞中获取事件,如在您的示例中,可以使用

考虑到在这种情况下,方法的参数将是Collider other,它是a而不是a,但在您的情况下,我认为您根本不需要碰撞

私有无效OnTiggerIntercollider其他 =>Debug.logenter; 关于统一碰撞的见解 碰撞取决于刚体和碰撞器设置对象。我可以根据你的情况举几个例子

要考虑的第一个因素是静态Collider不是通常的静态对象集,这是下面评论中的一个混淆来源。 从

静态对撞机 这是一个有碰撞器但没有刚体的游戏对象。静止的 碰撞器用于始终保持不变的标高几何体 不要到处乱动。传入的刚体对象将发生碰撞 但不会移动它

还可以考虑使用一个触发器,使静态COLLDER成为静态触发器碰撞器

触发器背后的基本思想是: 当你想捕捉事件但不想让游戏对象与物理力交互时,使用触发器

触发 脚本系统可以检测冲突何时发生并启动 使用OnCollisionCenter函数的操作。但是,您也可以使用 当一个对撞机进入太空时,物理引擎就可以简单地探测到 在不产生碰撞的情况下对另一个进行碰撞。一种配置为碰撞器的碰撞器 使用Is-Trigger属性的触发器不会表现为实体 对象,只允许其他碰撞器通过。当 对撞机进入其空间时,触发器将调用OnTriggerEnter 触发器对象脚本上的函数

问题:任何对象与触发器之间都没有碰撞 要了解碰撞是如何工作的,首先需要确定哪些对象正在碰撞,因为很少有对象会触发碰撞

根据您的描述,我们可以确定两种类型的对象

对象A:运动学刚体触发碰撞器 对象B:静态触发碰撞器

如果您检查,则可能不会与同时触发对象a和对象B的任何对象发生碰撞,因此OnCollisionCenter不会触发。 我重复一遍:不管另一个物体是什么,触发器都不会与任何物体碰撞

解决方案:使用OnTiggerCenter而不是OnCollisionCenter 如果希望从与触发器对象或其中两个对象的碰撞中获取事件,如在您的示例中,可以使用

考虑到在这种情况下,方法的参数将是Collider other,它是a而不是a,但在您的情况下,我认为您根本不需要碰撞

私有无效OnTiggerIntercollider其他 =>Debug.logenter; 关于统一碰撞的见解 碰撞取决于刚体和碰撞器设置对象。我可以根据你的情况举几个例子

要考虑的第一个因素是静态Collider不是通常的静态对象集,这是下面评论中的一个混淆来源。 从

静态对撞机 这是一个有碰撞器但没有刚体的游戏对象。静止的 碰撞器用于始终保持不变的标高几何体 不要到处乱动。传入的刚体对象将发生碰撞 但不会移动它

还可以考虑使用一个触发器,使静态COLLDER成为静态触发器碰撞器

触发器背后的基本思想是: 当你想捕捉事件但不想让游戏对象与物理力交互时,使用触发器

触发 脚本系统可以检测冲突何时发生并启动 使用OnCollisionCenter函数的操作。但是,您也可以使用 当一个对撞机进入太空时,物理引擎就可以简单地探测到 在不产生碰撞的情况下对另一个进行碰撞。一种配置为碰撞器的碰撞器 使用Is-Trigger属性的触发器不会表现为实体 对象,只允许其他碰撞器通过。当 对撞机进入其空间时,触发器将调用OnTriggerEnter 触发器对象脚本上的函数


我看不出这两个物体是静态的。碰撞矩阵有一个Y,其中运动学刚体碰撞器遇到刚体触发碰撞器从我读到的我们有一个静态碰撞器,它是一个游戏对象,有一个碰撞器刚体,没有带触发器的刚体vs运动学刚体触发碰撞器。静态用于对象本身。它是检查器右上角的一个复选框。静态、运动学和刚体并不是相互排斥的,因为它们是单独驱动的。我引用静态碰撞器:这是一个有碰撞器但没有刚体的游戏对象。明白。谢谢你指出这一点。OP将无法将OnCollisionCenter与触发器一起使用Regardles我看不出任何一个对象是静态的。碰撞矩阵有一个Y,其中运动学刚体碰撞器遇到刚体触发碰撞器从我读到的我们有一个静态碰撞器,它是一个游戏对象,有一个碰撞器刚体,没有带触发器的刚体vs运动学刚体触发碰撞器。静态用于对象本身。它是检查器右上角的一个复选框。静态、运动学和刚体并不是相互排斥的,因为它们是单独驱动的。我引用静态碰撞器:这是一个有碰撞器但没有刚体的游戏对象。明白。谢谢你指出这一点。OP无论如何都不能将OnCollisionCenter与触发器一起使用