2017-10-13 2 views
0

私はnGameObjectsの子どもはGameObjectです。子供のゲームオブジェクト自体を破棄させる問題

それぞれの子は、添付の独自の子スクリプトを持っています。 1つの子オブジェクトをクリックすると、ALL子どもが応答します。

子がロードされるとき、それは親の下で自分自身を置き、私が欲しい場合、私は後でそれに追いつくことができますので、私はまた、番号を渡します。

ここに私のスクリプトです。本当にそれほど多くはありません。誰でも私が間違っていることを知っていますか?このスクリプトは、あなたのすべての子オブジェクトに取り付けられているので

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

、彼らはすべてのマウスがクリックされたかどうかをチェックして、マウスクリックが検出されたときに、したがって、すべての(自分自身を破壊するマウスクリックは、すべてで検出されたため、スクリプト)。

私はレイキャストを使用して母ゲームオブジェクトにスクリプトを1つ持つ示唆し、コライダーを取り付け、それらのいずれかをクリックしたときに検出するために、それぞれの子にタグを付け、その後、対応するクリックしたオブジェクトを破壊するであろう。あなたがゲームオブジェクトをクリックした場合は、マウスボタンではなくクリックした場合は、更新機能のチェックで

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); 
     } 
    } 
} 
関連する問題