2016-04-18 8 views
0

Ich habe ein Prefab erstellt und in ein Skript instanziiert, das wie unten beschrieben an ein anderes Spielobjekt angehängt wurde.So finden Sie den Index eines kollidierenden Spielobjekts in OnCollisionEnter2D()

void Start() { 

    badGuys= new List<GameObject>(); 

    int numberOfBadGuys = 6; 
    Camera camera = GameObject.FindGameObjectWithTag ("MainCamera").GetComponent<Camera>(); 

    for (int i = 1; i < numberOfBadGuys + 1; i++) { 
     GameObject badGuyObject = (GameObject)Instantiate(badGuy, new Vector3(Screen.width*i/2, Screen.height*i/6, camera.nearClipPlane), Quaternion.identity); 
     badGuys.Add(badGuyObject); 
    } 

} 

Da alle der instanziiert Objekte im Array den gleichen Tag und Spiel zum Gegenstand haben, wie kann ich den Index des kollidierenden Objekts im Array finden?

void OnCollisionEnter2D(Collision2D col) { 
    Debug.Log("collision has began"); 

    if (col.gameObject.tag == "badGuy") { 
      // how can I tell the index of colliding game object in badGuys array 
     } 
} 
+0

Erkennen Sie die Kollision in demselben Skript, das das Array von Badguys enthält? – Agustin0987

+0

Ja, sie beide im selben Skript – Nullititiousness

Antwort

0

Sie sollten die Gameobject wie diese nur Schleife und vergleichen können:

void OnCollisionEnter2D(Collision2D col) 
{ 
    Debug.Log("collision has began"); 

    int collidedBadGuyIndex = -1; //This variable should be outside this function. 

    if (col.gameObject.tag == "badGuy") 
    { 
     for (int i=0; i<badGuys.Length; i++) 
     { 
      if (col.gameObject.Equals(badGuys[i])) 
      { 
       collidedBadGuyIndex = i; 
       break; 
      } 
     } 
    } 
} 

Wenn dies nicht funktioniert, dann Sie ein Skript zu den badguys hinzufügen könnte (dh BadGuyScript.cs) und innerhalb des Skript fügen Sie eine Variable namens bool hasCollided = false; dann, wenn der Badguy kollidiert setzen Sie die Variable auf true und dann alle badguys loop und finden Sie den Index der badguy, die den Wert gleich true hat.

+0

Hallo Agustin. Es ist wahr, dass auf den ersten Blick, wie das Problem beschrieben wird, der einzige Weg, den Index zu finden, eine Schleife ist, wie Sie sagen. Aber wie "ja" unten erwähnt, sollte jeder der Artikel seinen eigenen Index kennen. – Fattie

+0

@Joe Blow Ja, ich weiß, seine Lösung ist besser, ist nur, dass wir fast zur gleichen Zeit gepostet haben, also wahrscheinlich Poster, während ich meine Antwort schrieb. – Agustin0987

1

Haben Sie daran gedacht, Ihre bösen Jungs über ihren Index aufzuklären?

+0

in der Tat. und darüber hinaus, Null, nicht vergessen, dass Sie auch die Kollision *** auf dem bösen Typ *** erkennen können. Sie sollten das tun und jede Verarbeitung dort tun. – Fattie

0

Versuchen Sie eine Eltern für alle Ihre bösen Jungs zu verwenden.

+0

das ist sehr wahr ... – Fattie

Verwandte Themen