Unity2D 游戏,为什么我的游戏对象没有被销毁

Car*_*szy 4 game-engine unity-game-engine

为什么我的名为“pipo”的游戏对象没有被销毁这是我的脚本:

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

Mat*_*wHD 5

尝试稍微更改您的代码,首先您通常应该使用CompareTag()which 当给定的标签不存在时给出错误消息。

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

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当对象仍未被销毁时,您需要确保:

  1. 您要销毁的游戏对象具有名为“pipo”的标签
  2. 该脚本所在的游戏对象启用了 IsTrigger 以及一个碰撞器
  3. “pip”游戏对象有一个碰撞器并且未设置为 IsTrigger
  4. 两个对象都附加了一个刚体组件
  5. 碰撞器附加到“pipo”游戏对象而不是它的父对象