如何使其无效OnCollisionEnter()适用于每个实例化对象

时间:2015-07-26 06:45:57

标签: c# unity3d

如何使这行代码:

void OnCollisionEnter(Collision collision) {
    Destroy(gameObject);
}

适用于每个实例化对象?

因为只有部分而非所有实例化对象都会自行毁坏。

[PS:]我希望如何:

当子弹与另一个实体发生碰撞时,子弹被击中它会摧毁自己,而不是全部,我将PS添加为更具体。

2 个答案:

答案 0 :(得分:1)

如果我已正确理解你的问题,你想让你的子弹自己摧毁他们击中的对象。如果是这样,它将是这样的:

void OnCollisionEnter(Collision collision) {
    // destroy the GameObject with which the bullet collided, before destroying the bullet
    Destroy(collision.gameObject);  
    Destroy(gameObject);
}

答案 1 :(得分:0)

你的问题听起来很模糊,但我会尽力回答这个问题。 您可以使用" OnCollisionEnter"制作单独的脚本来销毁。并将它附在您的子弹预制件上。 可以说,你创建了一个名为" Destroy"并在类

中添加了以下代码行
void OnCollisionEnter(Collision collision) {
    Destroy(gameObject);
}

然后将此脚本附加到名为bullet的预制件上。现在每当你实例化一个子弹时,这个脚本就会附加到那个子弹上,一旦它击中另一个游戏对象,它就会自行消灭。如果你需要使用该子弹销毁任何特定对象,那么你可以使用标签来做到这一点,就像这样

    void OnCollisionEnter(Collision collision) {
        if(collision.gameobject.tag=="enemy")
            Destroy(collision.gameobject);      //to destroy enemy
        Destroy(gameobject);                    //to destroy bullet
     }

如果你想要销毁所有实例化的游戏对象,那么你应该将这些游戏对象存储在数组中并运行一个循环到" OnCollisionEnter"把它们全部摧毁。