using System.Collections.Generic; using UnityEngine; public class SingleTargetFinder { HashSet filterTags = new HashSet(); public SingleTargetFinder(params string[] filterTags) { for(int i = 0; i < filterTags.Length; i++) { this.filterTags.Add(filterTags[i]); } } public bool TryFindNearest(Vector2 pivot, out CreatureBase result) { CreatureBase minDistCreature = null; float minSqrtDist = float.MaxValue; BattleMgr.LoopAllCreatures((creature) => { if (filterTags.Contains(creature.tag)) { float sqrtDist = (pivot - (Vector2)creature.transform.position).sqrMagnitude; if (sqrtDist < minSqrtDist) { minSqrtDist = sqrtDist; minDistCreature = creature; } } return true; }); result = minDistCreature; return minDistCreature != null; } }