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

问题描述 投票:-1回答:1
void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.gameObject.tag == "Bullet")
    {
        Destroy(gameObject);
        Debug.Log("hit");
    }
}

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

任何帮助都会很棒。

c# unity3d 2d collision
1个回答
1
投票

要检查的内容:

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.