【发布时间】:2026-02-17 06:40:01
【问题描述】:
我的代码是:
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”的代码。
【问题讨论】:
-
你添加 Collider 组件了吗?
-
@TimChang 是的,他们都有对撞机。
-
您是否检查过
OnCollisionEnter ( ... )确实被调用了,并且Collider组件上没有选择isTrigger!!!!如果这些检查正确执行,那么第一个if clause似乎是最好的方法:-) -
@nIcEcOw 我需要一个刚体才能让对撞机工作吗?如果不是,那么它应该发生碰撞。它们都没有设置为触发器。
-
@CocoWaff:至少有一个碰撞的游戏对象需要有一个“刚体”。查找Collider.OnCollisionEnter ( ... ) doc的描述部分。
标签: c# unity3d variables tags collision