OnCollisionEnter()在Unity3D中不起作用

Tem*_* Id 10 c# unity-game-engine

我有一个带有网格对撞机的物体和一个带有球体对撞机的预制件.如果两个碰撞,我想要销毁预制件的实例.

我在脚本中写了以下内容:

private void OnCollisionEnter(Collision c)
{
    if (c == target)
        Destroy(transform.gameObject);
    print("something");                   // Doesn't get printed
}
Run Code Online (Sandbox Code Playgroud)

但它没有用.我试过切换isTrigger两个对象.

Pet*_*vaz 23

我有同样的问题,OnCollisionEnter没有被调用,发现了这个问题.

对我来说,问题是我正在制作2D游戏,所以答案是使用该OnCollisionEnter2D功能.

  • 除了你之外,没有人在整个互联网上提到这个. (9认同)
  • 谢谢!并且`Collsion collsion`论证也必须是`Collision2D`. (6认同)

Oha*_*hen 11

看看这张桌子

如果你想要你的OnCollisionEnter电话,请确保:

(a)两个物体都附有对撞机.

(b)没有任何对象是触发器对撞机(这将发出OnTrigger函数而不是OnCollisionEnter)

(c)其中一个物体(无论其中哪一个)是刚性的,非运动的和非静态的物体(第二个物体不一定是刚体).

(d)由于计算困难,MeshCollider可能很难与其他网格对撞机碰撞,请谨慎使用.

(e)确保两个对象都在同一层中.

示例colider配置


luk*_*itt 5

确保其中一个附有非运动刚体.取自Unity文档:

当两个碰撞器之间发生碰撞并且其中至少有一个碰撞有一个Rigidbody时,会向附着的物体发送三条碰撞消息.这些事件可以在脚本中处理,并允许您创建独特的行为,无论是否使用内置的NVIDIA PhysX引擎.

从这里:Unity3D MeshCollider