Find the closest Enemy that has a tag added in a list?
I've tried to make a fighting game between 4 teams, I completed everything but there is more complicated issue
when I start the match the AI didn't attack the closest enemy
it fixed when I use (FindGameObjectsWithTag("tag")), but he dosen't when I use (FindGameObjectsWithTag(tag))
Because I don't want to use (" ") i want it to find the closest Enemy with any tag added to the list
Example: the list has 3 tags (Team1,Team2,Team3) the fighter from Team1 fighting a fighter from Team2, now the Team2 fighter escaped and gone far away, and there is more closer enemy has Team3 tag, how can I make the Team1 fighter to stop chasing Team2 fighter who escaped, and start chasing the closer enemy Team3?
I used this code but he didn't work
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class script: MonoBehaviour {
public List<string> tags;
public GameObject TargetedEnemy;
void Start () {
}
void Update () {
foreach (var thetag in tags) {
GameObject[] gos;
gos = GameObject.FindGameObjectsWithTag (thetag);
GameObject closest;
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in gos) {
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance) {
closest = go;
distance = curDistance;
closest = TargetedEnemy;
}
}
}
}
}
Answer by KenjiKyo · Jul 14, 2017 at 04:11 AM
Move GameObject closest;
out of your for
loop, you reinitialize it on each pass.
Also, I think you meant to write TargetedEnemy = closest;
instead to update your variable available for the Editor.
I would also move the TargetedEnemy = closest;
statement after the for
loop so it actually only gets updated once with the closest found target after all possibilities have been processed in the loop.
Your answer
![](https://koobas.hobune.stream/wayback/20220612124821im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Getting the element that has the same element number on another list ? 2 Answers
I have trouble understanding arrays and enums. When and how? 0 Answers
Remembering list of camera positions is not working 0 Answers
Array problem, I'm novice 1 Answer
Creating card game - copy of list to new list - creating cycle 1 Answer