Basis festgelegt
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user