Unity - GameObject在击中预制件时不会被破坏

时间:2018-04-02 18:56:31

标签: c# unity3d destroy gameobject

在游戏中你控制一个球(Sphere)和两种类型的盒子掉落:deathCube和goldCube。当球体击中死亡立方体时,球体就会被摧毁,但它不会被摧毁,我不知道为什么。立方体是预制件,它们有一个标签(DeathCube,GoldCube)。

    void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "DeathCube") 
    {
        Destroy (gameObject);
    }
}   

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "GoldCube") 
    {
        gold++;
    }
}   

如果Sphere击中了goldCube,你会获得积分,但这也不起作用。

2 个答案:

答案 0 :(得分:2)

尝试将两个OnTriggerEnter合并为一个。

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "DeathCube") 
    {
        Destroy (gameObject);
    }

    if (other.gameObject.tag == "GoldCube") 
    {
        gold++;
    }
}  

我相信第二个覆盖了第一个,从不允许调用Destroy()。我会假设编译器会抛出一个错误,但你似乎没有表明这一点。

答案 1 :(得分:1)

如果您没有在碰撞(球或立方体)中的至少一个物体上附加刚体,则不会启动触发事件。

来自文档:

  

注意:仅当其中一个碰撞器还附有刚体时才会发送触发事件

来源:https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html