2014-03-13 109 views
0

我有一个脚本,在与敌人碰撞时箭头应该消失。我用Unity Destroy(gameObject)杀死多个碰撞体上的父对象和碰撞触发

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上面堆叠敌人时,他们停在一个cre location位置,有时候有超过1个敌人共享相同的碰撞区域。一箭就会对同一地点的所有敌人造成伤害,而不是同一地点的一个敌人。

var health = 10; 

    function ApplyDamage (damage : float) { 

    health -= damage; 

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

这些应该是2个问题,哪里的代码是抛出错误的代码? – Roberto

回答

0

关于第二个问题:

箭头撞机将引发它涉及所有对撞机的碰撞,这是适当的行为。如果你想使箭头只与一个敌人相撞,则应该在箭头上创建一个脚本并使用它的OnTrigger/OnCollision来禁用其对撞机。

0

看起来是因为父对象被销毁。

父对象何时被销毁?如果之前被销毁的话

Destroy (gameObject); 

然后你不需要销毁gameobject,因为它会在父母被销毁时自动销毁。