Vedi altro tag, ma non il suo
Domanda
E 'possibile chiamare tutti gli oggetti in un array? O sta utilizzando il numero l'unico modo?
public void Update()
{
Targetting ge = (Targetting)target.GetComponent("Targetting");
enemies = ge.targets;
float attackDistanceP = Vector3.Distance(target.transform.position, transform.position);
foreach (Transform enemy in enemies)
{
float enemyDistance = Vector3.Distance(enemy.transform.position, transform.position);
print(enemyDistance);
}
Debug.DrawLine(transform.position, waypointPosition, Color.black);
if (attackDistanceP < 8)
disableNow = true;
if (attackDistanceP > 8)
disableNow = false;
}
Voglio chiamare tutti gli oggetti nei nemici [] array. In modo che tutti i nemici possono vedere l'un l'altro. Ma io non voglio loro di vedere themselfs. Im utilizzando il GameObject.FindGameObjectsWithTag per riempire l'array in un altro script.
Soluzione
Alcuni ottimizzazione prematura per voi:
using System.Collections.Generic;
public Transform trans;
Targetting ge;
void Start() {
trans = transform;
ge = target.GetComponent<Targetting>();
}
void Update () {
enemies = ge.targets;
float attackDistanceP = (target.trans.position - trans.position).sqrMagnitude; // save a square root
foreach(Transform enemy in enemies){
if (enemy == trans) continue; // skip me
float enemyDistance = (enemy.trans.position - trans.position).sqrMagnitude; // save a square root
print(enemyDistance);
}
Debug.DrawLine (trans.position, waypointPosition, Color.black);
if(attackDistanceP < 64)
disableNow = true;
if(attackDistanceP > 64)
disableNow = false;
}
Altri suggerimenti
foreach(Transform enemy in enemies){
if (enemy == this.transform) continue; // skip me
float enemyDistance = Vector3.Distance(enemy.transform.position, transform.position);
print(enemyDistance);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow