Hey ho. Hab da mal wieder ein kleines Problem....
Ich möchte ein Object losschicken, es läuft auf gerader Linie. Wenn dieses Object jetzt in der Reichweite eines "feindlichen" Objects ist, soll es stehen bleiben. Das bekomm ich auch ohne weiteres hin. Wenn ich jetzt allerdings ein weiteres Object losschicke, nimmt das Object die Distanz des zuletzt erstellten Objects. Hier mal mein Code, welcher am Objekt hängt:
void Update () {
List<GameObject> redUnits = new List<GameObject>();
List<GameObject> blueUnits = new List<GameObject> ();
redUnits = GameObject.FindGameObjectsWithTag ("RedUnit").ToList();
blueUnits = GameObject.FindGameObjectsWithTag ("BlueUnit").ToList();
shotTimer -= Time.deltaTime;
if (gameObject.tag == "BlueUnit"){
if(unitMove)
transform.Translate (0,0,-0.05f); else transform.Translate (0,0,0);
}
if (gameObject.tag == "RedUnit"){
if(unitMove)
transform.Translate (0,0,0.05f); else transform.Translate (0,0,0);
}
if (gameObject.tag == "BlueUnit"){
foreach(GameObject enemy in redUnits) {
float distance = Vector3.Distance (enemy.transform.position, transform.position);
if(distance <= radius*2){
unitMove = false;
} else unitMove = true;
}
}
}
Habe auch folgende Variante versucht:
if(gameObject.tag == "RedUnit"){
Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius);
int i = 0;
foreach(Collider col in hitColliders) {
if(col.tag == "BlueUnit") {
unitMove = false;
} else unitMove = true;
}
}
Und:
Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius);
int i = 0;
while (i < hitColliders.Length) {
if(hitColliders[i].tag == "RedUnit"){
unitmove = false;
} else unitmove = true;
i++;
}
Bei "OverlapSphere" gibt es ja noch die Möglichkeit als 3, Argument nen LayerMask anzuhängen. Aber was es damit auf sich hat, konnte ich leider nicht herrausbekommen... hatte der Redunit den Layer "Red" gegeben, welcher auf layernummer 9 lag. Das hat er auch fein erkannt, jedoch dann bei "Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius, 9);" die Einheit nicht erkannt.
Vielen Dank schonmal im vorraus für sämtliche Hilfestellungen
Gruß Noxen