Unity2D游戏,为什么我的gameObject没有销毁

时间:2020-07-23 17:53:28

标签: unity3d game-engine

为什么我的名为“ pipo”的GameObject没有销毁 这是我的脚本:

private void OnTriggerEnter(Collider other)
{
    if (other.gameObject.name == "pipo")
    {
        Destroy(other.gameObject.transform.parent.gameObject);
    }
}

1 个答案:

答案 0 :(得分:5)

尝试稍微修改一下代码,首先通常应使用CompareTag(),当给定的标记不存在时,它会发出错误消息。

此后,您可以添加检查以查看游戏对象是否具有父对象,并根据该对象销毁其父对象或自身。

private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("pipo")){
    return;
    }

    if(other.gameObject.transform.parent) {
        Destroy (other.gameObject.transform.parent.gameObject);
    }
 
    else {
        Destroy ( other.gameObject);
    }
}

当物体仍然没有被销毁时,您需要确保:

  1. 您要销毁的游戏对象具有名为“ pipo”的标签
  2. 此脚本所在的GameObject已启用IsTrigger以及对撞机
  3. “点子” GameObject具有Colllider,并且未设置为IsTrigger
  4. 两个对象都有一个附加的刚体组件
  5. 对撞机附加到“ pipo”游戏对象上,而不是其父对象上。