与游戏对象发生碰撞时如何检查其标签?
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
函数中设置一个断点以验证它是否曾经被调用。
我的代码是:
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
函数中设置一个断点以验证它是否曾经被调用。