Unity Destroy(gameObject)杀死多个碰撞器上的父对象和碰撞触发器

时间:2014-03-13 02:23:10

标签: unity3d unityscript

我有一个脚本,当与敌人发生碰撞时箭头应该消失。我用

    function OnTriggerEnter2D(coll: Collider2D) {
        coll.gameObject.BroadcastMessage("ApplyDamage", 10);
        Destroy (gameObject);
}

第一个问题是,当游戏对象被销毁时,我收到错误并说The object of type 'Transform' has been destroyed but you are still trying to access it.似乎是因为父对象被销毁了。我还有另一个问题。当我在2D中将敌人堆叠在每个敌人的顶部时,他们会停在一个战斗位置,有时会有超过1个敌人共享相同的碰撞区域。一个箭头会对同一地点的所有敌人造成伤害,而不是同一地点的一个敌人。

    var health = 10;

    function ApplyDamage (damage : float) {

    health -= damage;

    if ( health <= 0) {
    Destroy(gameObject);
    }
}

2 个答案:

答案 0 :(得分:0)

关于你的第二个问题:

箭头碰撞器将触发碰撞的所有碰撞器中的碰撞,这是合适的行为。如果你想让箭头只与一个敌人发生碰撞,你应该在箭头上创建一个脚本并使用它的OnTrigger / OnCollision来禁用它的对手。

答案 1 :(得分:0)

  

似乎是因为父对象被破坏了。

父对象何时被销毁?如果它在

之前被销毁了
Destroy (gameObject);

然后你不需要销毁游戏对象,因为它会在父母被摧毁时自动被销毁。