here is my code
public class targeting : MonoBehaviour {
public List targets;
public Transform selectedTarget;
private Transform myTransform;
// Use this for initialization
void Start () {
targets = new List ();
selectedTarget = null;
myTransform = transform;
AddAllEnemies ();
}
public void AddAllEnemies () {
{
GameObject[] go = GameObject.FindGameObjectsWithTag ("Enemy");
foreach (GameObject enemy in go)
AddTarget (enemy.transform);
}
}
public void AddTarget(Transform enemy)
{
targets.Add (enemy);
}
// Find the name of the closest enemy
private void SortTargetsByDistance()
{
targets.Sort (delegate(Transform t1, Transform t2) {
return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
});
}
private void TargetEnemy()
{
if (selectedTarget == null) {
SortTargetsByDistance();
selectedTarget = targets [0];
}
else
{
int index = targets.IndexOf(selectedTarget);
if(index < targets.Count - 1)
{
index++;
}
else
{
index = 0;
}
selectedTarget = targets[index];
SelectTarget();
}
}
private void SelectTarget(){
selectedTarget.GetComponent().material.color = Color.red;
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown (KeyCode.Tab)) {
TargetEnemy();
}
}
}
↧