与游戏对象发生碰撞时如何检查其标签?

How do I check the tag of a GameObject when I collide with it?

我的代码是:

    private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.CompareTag ("bullet"))
        {
            UI.lives--;
        }
        if (collision.gameObject.tag == "life")
        {
            UI.livePart++;
        }
    }

我尝试了两种不同的方法来让它工作,但都没有真正正常工作。 对于最上面的那个,当我的玩家对象第一次与带有“子弹”标签的游戏​​对象发生碰撞时,它应该将我的“生命”整数减少 1。

对于第二个,当它第一次与标签为“life”的游戏对象发生碰撞时,它应该将另一个整数“livePart”增加 1。

UI 是存储变量“lives”和“livePart”的代码。

要检查的一件事是 documentation 提到

Notes: Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached.

如果你碰巧在 RigidBody 下的检查器中勾选了“Is Kinematic”,那么你将不会得到碰撞事件。

此外,以防万一这是新信息,如 here 所示将调试器附加到您的脚本中确实有帮助。例如,您可以在 OnCollisionEnter 函数中设置一个断点以验证它是否曾经被调用。