Files
DepthsOfGreed/Assets/Scripts/EnemyTargetManager.cs
T
2026-10-06 09:31:55 +02:00

50 lines
1.2 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class EnemyTargetManager : MonoBehaviour
{
[SerializeField]
private List<Transform> targetPoints = new List<Transform>();
public Transform GetClosestActiveTarget(Vector3 position)
{
List<Transform> closestTargets =
new List<Transform>();
float closestDistanceSqr = float.MaxValue;
foreach (Transform target in targetPoints)
{
if (target == null || !target.gameObject.activeInHierarchy)
continue;
float distanceSqr =
(target.position - position).sqrMagnitude;
if (distanceSqr < closestDistanceSqr)
{
closestDistanceSqr = distanceSqr;
closestTargets.Clear();
closestTargets.Add(target);
}
else if (Mathf.Approximately(
distanceSqr,
closestDistanceSqr))
{
closestTargets.Add(target);
}
}
if (closestTargets.Count == 0)
return null;
int randomIndex = Random.Range(
0,
closestTargets.Count
);
return closestTargets[randomIndex];
}
}