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

Unity: 2D Collision Detection Using Tags

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

这是我的代码,我感谢那里有很多其他资源,但是我在互联网上查看过,只是不明白我哪里出了问题。我知道它可能很小。我正在尝试使用标签进行碰撞检测销毁 "this" 游戏对象。 Bullet 预制件有 Bullet 标签并且拼写完全相同,两个游戏对象都有一个刚体和一个 2D 盒子对撞机。

任何帮助都会很棒。

要检查的事项:

  • Rigibody2D被模拟(inspector中Rigidbody2D模拟检查为真)
  • none 的碰撞器设置为 isTrigger
  • 因为这是 2d,所以确保两个精灵在同一层顺序或 z 顺序上
  • 尝试调试并检查子弹击中了哪个对象

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

(如果所有这些都被检查然后只是为了测试尝试降低子弹的速度,如果子弹太快然后尝试将“碰撞检测”更改为继续)

大多数导入的东西“调试” 并在销毁之前调试而不是在

之后

更好的做法是使用 [=h11=] 代替:

private void OnCollisionEnter(Collision other) {
    if(other.gameObject.CompareTag("Ground")) {
        isJumping = false;
    }
}