2017-10-13 48 views
0

我有ñGameObjects這是母親的孩子GameObject讓孩子游戲對象摧毀本身問題

每個孩子都附有自己的孩子腳本。如果我點擊一個孩子對象,全部孩子迴應。

當孩子被加載時,它將把自己置於父母之下,並且我還傳遞一個數字,以便稍後如果需要時可以跟上。

這是我的腳本。真的沒有太多。任何人都知道我在做什麼錯了?

public GameObject parentGameObject; 
public int childIndex; 

void Start() { 
    transform.parent = parentGameObject.transform; 
} 

void Update() { 
    if (Input.GetMouseButton(0)) { 
     Die(); 
    } 
} 

public void Die() { 
    Debug.Log("Child " + this.childIndex + " clicked"); 
    Destroy(this.gameObject); 
} 
+2

你在更新功能檢查代碼,如果你點擊鼠標按鈕沒有,如果你點擊一個遊戲對象:

,如果你是2D,但它的例子是,像這樣目前尚不清楚。所以他們都回應是正常的。 – CNuts

+0

我想我很困惑@CNuts我需要知道什麼時候單擊鼠標按鈕。 'Die()'包含遊戲對象。 –

+0

ryeMoss的答案几乎是你應該這樣做的。 – CNuts

回答

2

由於這個腳本被附加到所有子對象,它們都被檢查,看是否被點擊鼠標,因此所有當檢測到鼠標點擊(因爲在每次檢測到一個鼠標點擊毀滅自己腳本)。

我會建議在母親gameobject中使用Raycast並附加Colliders並標記每個孩子檢測其中一個單擊時,然後銷燬相應的單擊的對象的一個​​腳本。

void Update() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
     // cast a ray at the mouses position into the screen and get information of the object the ray passes through 
     RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); 
     if (hit.collider != null && hit.collider.tag == "child") //each child object is tagged as "child" 
     { 
      Destroy(hit.collider.gameObject); 
     } 
    } 
}