2017-10-13 18 views
0

nGameObjects은 어머니의 자식 인 GameObject입니다.아동 게임 객체 자체 파괴 문제를 허용하자

각 하위에는 자체 하위 스크립트가 연결되어 있습니다. 하나의 자식 객체를 클릭하면 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

귀하의 코드 : 당신은 2 차원에 있지만 그것에 대한 예과 같이 될 경우

그것은 분명하지 않다. 그래서 그들은 모두 정상적으로 반응합니다. – CNuts

+0

마우스 단추를 클릭하면 알 필요가있는 @CNuts 혼란스러워 보입니다. 'Die()'는 게임 객체를 포함합니다. –

+0

ryeMoss 대답은 당신이 그것을 어떻게 해야하는지 거의입니다. – CNuts

답변

2

, 그들은 모두 마우스가 클릭되어 있는지 확인, 따라서 모든 마우스 클릭이 매에서 검출되기 때문에 마우스 클릭이 (감지되면 스스로를 파괴 스크립트).

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); 
     } 
    } 
}