Unity3d Unity Destroy(游戏对象)在多个碰撞器上杀死父对象和碰撞触发器

Unity3d Unity Destroy(游戏对象)在多个碰撞器上杀死父对象和碰撞触发器,unity3d,unityscript,Unity3d,Unityscript,我有一个脚本,当一支箭与敌人相撞时,它应该消失。我用 function OnTriggerEnter2D(coll: Collider2D) { coll.gameObject.BroadcastMessage("ApplyDamage", 10); Destroy (gameObject); } 第一个问题是,当游戏对象被销毁时,我得到一个错误,并说类型为“Transform”的对象已被销毁,但您仍在尝试访问它。这似乎是因为父对象被销毁。我还有一个问题

我有一个脚本,当一支箭与敌人相撞时,它应该消失。我用

    function OnTriggerEnter2D(coll: Collider2D) {
        coll.gameObject.BroadcastMessage("ApplyDamage", 10);
        Destroy (gameObject);
}
第一个问题是,当游戏对象被销毁时,我得到一个错误,并说
类型为“Transform”的对象已被销毁,但您仍在尝试访问它。
这似乎是因为父对象被销毁。我还有一个问题。当我在2D中有敌人堆叠在每一个上面时,他们会停在某个特定位置,有时会有超过一个敌人共享同一碰撞区域。一支箭会对同一地点的所有敌人造成伤害,而不是对同一地点的一个敌人造成伤害

    var health = 10;

    function ApplyDamage (damage : float) {

    health -= damage;

    if ( health <= 0) {
    Destroy(gameObject);
    }
}
var-health=10;
功能应用损坏(损坏:浮动){
健康-=损害;

如果(健康状况对于第二个问题:

箭头碰撞器将在其接触的所有碰撞器中触发碰撞,这是适当的行为。如果您希望使箭头仅与一个敌人碰撞,则应在箭头上创建脚本,并使用其
OnTrigger
/
OnCollision
禁用其碰撞器

这似乎是因为父对象已被销毁

父对象是什么时候被销毁的?如果它以前被销毁过

Destroy (gameObject);

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

这应该是两个问题,抛出错误的代码在哪里?