void FindIdealCover() { int coverIndex = -1; for (int i = 0; i < nearbyCovers.Count; i++) { float coverDistanceFromMyFaction = AverageDistanceFromSquad(nearbyFriends, nearbyCovers [i]); float coverDistanceFromEnemiesFaction = AverageDistanceFromSquad(nearbyEnemies, nearbyCovers [i]); if (coverDistanceFromMyFaction < coverDistanceFromEnemiesFaction && coverDistanceFromEnemiesFaction > 4) { coverIndex = i; break; } } if (coverIndex != -1) { coverToPersue = nearbyCovers [coverIndex]; lastDestination = currentDestination; currentDestination = coverToPersue.coverPosition.position; agent.SetDestination(currentDestination); persuingCover = true; } }
float AverageDistanceFromSquad(List <ShAI_U> squad, CoverObjects cover) { List <float> distances = new List <float> (); for (int i = 0; i < squad.Count; i++) { distances.Add(ApproxDistance(squad [i].transform.position, cover.transform.position)); } float averageDistance = 0; for (int i = 0; i < distances.Count; i++) { averageDistance += distances [i]; } averageDistance /= distances.Count; return(averageDistance); }