Unity:使用标签的2D碰撞检测

时间:2019-12-24 08:16:20

标签: c# unity3d 2d collision

void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Bullet")
    {
        Destroy(gameObject);
        Debug.Log("hit");
    }
}

这是我的代码,我很欣赏那儿有很多其他资源,但是我在互联网上看过了,只是无法理解我哪里出错了。我知道它可能很小。我试图进行碰撞检测,使用标签破坏“此”游戏对象。 Bullet预制件具有Bullet标签,并且拼写完全相同,两个gameObjects都具有刚体和2D盒子对撞机。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:3)

要检查的事情:

  • Rigibody2D是模拟的(在检查器中,Rigidbody2D模拟的检查为真)
  • 所有对撞机均未设置为isTrigger
  • 因为这是二维的,所以请确保两个精灵位于相同的图层顺序或z顺序
  • 尝试调试并检查击中了哪个对象

(我假设您拥有Rigidbody2D,而不是您在问题中提到的Rogidbody)

(如果所有这些检查都进行了检查,则只是为了测试而尝试降低子弹的速度,如果子弹过快,则尝试将“碰撞检测”更改为继续)continues

最进口的东西“调试” 并在销毁之前进行调试