remove enemy from array when dies

Hello, om making an ally ai but im stuck i dont know how to remove the enemy from the array or another so an ally is not attacking an dead enemy

Here is my code
#pragma strict
//variables

var enemy : GameObject[ ];
var closest : GameObject;
var distance : float[ ];
var distancetoclose : float;
var Active : float[ ];
var attackrange : int; //range for attack
var damping : int;
var movespeed : int;
var damage : int;
var stopdistance : int;
var hitdistance : int;
var closestenemy = -1;
var test : int;
function Awake(){
//find the enemy tag
enemy = GameObject.FindGameObjectsWithTag(“Enemy”);
//set variables
attackrange = 40;
damping = 4;
movespeed = 5;
damage = 20;
hitdistance = 2;
stopdistance = 2;
}

function Start () {
//calling my function
FindClosest();

}

function Update () {
//Calculate Distance
Attack();

for(var i = 0; i<enemy.length; i++){

distance = Vector3.Distance(enemy*.transform.position, transform.position);*

FindClosest();

//if a enemy is dead

}
}

function FindClosest(){
//the closest

for(var i = 0; i<distance.length; i++){

if(closestenemy == -1 || distance < distance[closestenemy]){
closestenemy = i;

closest = enemy[closestenemy];
}

}
}

function Attack(){
if(closest.active == true){
var rotation = Quaternion.LookRotation(closest.transform.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping);
distancetoclose = Vector3.Distance(closest.transform.position, transform.position);
if(distancetoclose > stopdistance){
transform.Translate(Vector3.forward * movespeed * Time.deltaTime);
}
if(distancetoclose < hitdistance && distancetoclose > 0){
yield WaitForSeconds(2.0);
animation.Play(“Swing”);
yield WaitForSeconds(1.0);
closest.SendMessage(“ApplyDamage”, damage, SendMessageOptions.DontRequireReceiver);
}

else{
test = 1;
FindClosest();
}
}

}

You can’t modify an array once it is initialized, use List or just disable the gameobject. Also use the code tag to get better help.

2 Likes

add the object to a PendingDelete list and delete it after the iteration

Check out the generic collections. Lists are typically the way to go for development.

2 Likes