Enemy AI aggro based on damage
Hey guys, I am making a game which will have different units and factions fighting againts each other. Currently I have it set up so that the AI will find targets through their race/allegiance along with their base AggroLevel, while within a certain range. I would now like to implement a personelAggro system on top of that, so the Ai wont just lock on to a target untill one of them perishes in battle. I was thinking of somehow adding a "personelAggro" int to each target in the array, that will increase if the Ai takes damage. If it pases the current AI target aggro, it will switch off and attack the one with the highest amount of personelaggro + aggroLevel. If you have another solution to this I'd like to see that to, thanks.
public void TargetField()
{
int maxColliders = 20;
Collider[] hitColliders = new Collider[maxColliders];
int numColliders = Physics.OverlapSphereNonAlloc(transform.position, chaseDistance, hitColliders, 1 << 9);
var highestAggroNum = -99999f;
Transform closestTarget = null;
float maxDistance = Mathf.Infinity;
if (hitColliders.Length <= 0)
{
return;
}
for (int i = 0; i < numColliders; i++)
{
var notDead = !hitColliders[i].GetComponent<Health>().IsDead();
var notMe = transform.position != hitColliders[i].transform.position;
if (hitColliders[i].GetComponent<Race>().race == Races.Human && notDead && notMe)
{
var max = hitColliders[i].GetComponent<Health>().GetAggroLevel();
if ((max > highestAggroNum) && (max != 3))
{
highestAggroNum = max;
mainTarget = hitColliders[i].gameObject;
break;
}
else
{
potentialTarget = hitColliders[i].gameObject;
float targetDistance = Vector3.Distance(transform.position, potentialTarget.transform.position);
if (targetDistance < maxDistance)
{
closestTarget = potentialTarget.transform;
maxDistance = targetDistance;
mainTarget = closestTarget.gameObject;
}
}
}
}
if (mainTarget != null)
{
target = mainTarget;
}
else
return;
}
Your answer
Follow this Question
Related Questions
Basic Following AI 4 Answers
Help with Player RPG Attack! 0 Answers
How could I implement a "border" system for my medieval game? 0 Answers
How to make AI avoid walls etc ? 1 Answer
Have enemy constantly try to get in front of player and push them back 0 Answers