2014-03-13 139 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,因爲它會在父母被銷燬時自動銷燬。