【发布时间】:2020-04-15 08:41:25
【问题描述】:
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Bullet")
{
Destroy(gameObject);
Debug.Log("hit");
}
}
这是我的代码,我很欣赏那里有很多其他来源,但是我在互联网上查看过,只是不明白我哪里出错了。我知道它可能是这么小的东西。我正在尝试使用标签进行碰撞检测破坏“这个”游戏对象。 Bullet 预制件具有 Bullet 标签并且拼写完全相同,两个游戏对象都具有刚体和 2D 盒碰撞器。
任何帮助都会很棒。
【问题讨论】:
-
您可能想要更准确地解释 发生什么 vs 您想要发生什么以及哪些对象使用此代码。
-
现在我什至不确定这段代码是在子弹还是可破坏的物体上执行的。谁被标记也是如此。
-
实际上什么也没发生,脚本在一个敌人的 AI 精灵上,我想要它,所以当子弹碰撞当前的游戏对象(敌人的 AI 精灵)时被破坏。除了敌人 AI sprite prefab 的 prefab 之外,没有其他对象使用此代码。不,他们有单独的标签,敌人的 AI 精灵被标记为敌人,子弹被标记为子弹。
-
尝试打印出这个游戏对象的名称+标签,看看它与什么碰撞
-
一般来说,宁可使用
if(collision.gameObject.CompareTag("Bullet"))来排除任何拼写错误,因为如果给定的标签名称拼写错误/不存在,它会直接抛出错误,而不是静默失败。 (它也比字符串比较快一点;))另外,两者之一可能是isTrigger?