I’m trying to find a way to prevent an “index was out of range” error in update when there aren’t any targets to find.
I thought I could add an if statement to return if there weren’t any “selected objects,” but I’m still encountering the error.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class AI_FindObjects : MonoBehaviour {
public List <Transform> Enemies;
public Transform SelectedTarget;
void Update ()
{
SelectedTarget = null;
Enemies = new List<Transform>();
AddEnemiesToList();
}
public void AddEnemiesToList()
{
GameObject[] ItemsInList = GameObject.FindGameObjectsWithTag("PitcherPlant");
foreach(GameObject _Enemy in ItemsInList)
{
AddTarget(_Enemy.transform);
}
}
public void AddTarget(Transform enemy)
{
Enemies.Add(enemy);
}
public void DistanceToTarget()
{
Enemies.Sort(delegate( Transform t1, Transform t2){
return Vector3.Distance(t1.transform.position,transform.position).CompareTo(Vector3.Distance(t2.transform.position,transform.position));
});
}
public void TargetedEnemy()
{
if(SelectedTarget == null)
{
DistanceToTarget();
SelectedTarget = Enemies[0];
}
}
void LateUpdate ()
{
TargetedEnemy();
float dist = Vector3.Distance(SelectedTarget.transform.position,transform.position);
transform.position = Vector3.Lerp (transform.position, SelectedTarget.position, Time.deltaTime*1);
}
}