using UnityEngine; public class ArcherHunterSkill : UnitSkill { [Min(0f)] public float splitShotRadius = 3f; public override void ReleaseSkill() { GameObject mainTarget = unit.Target; if (mainTarget == null) { return; } GameObject nearbyOpponent = FindNearbyOpponent(mainTarget); unit.FireSkillProjectile(nearbyOpponent != null ? nearbyOpponent : mainTarget); } private GameObject FindNearbyOpponent(GameObject mainTarget) { string opponentTag = unit.OpponentTag; if (string.IsNullOrEmpty(opponentTag)) { return null; } GameObject nearbyOpponent = null; float nearestSqrDistance = splitShotRadius * splitShotRadius; GameObject[] opponents = GameObject.FindGameObjectsWithTag(opponentTag); foreach (GameObject opponent in opponents) { if (opponent == mainTarget || opponent == unit.gameObject || opponent.transform.root == unit.transform.root) { continue; } float sqrDistance = (opponent.transform.position - mainTarget.transform.position).sqrMagnitude; if (sqrDistance <= nearestSqrDistance) { nearestSqrDistance = sqrDistance; nearbyOpponent = opponent; } } return nearbyOpponent; } }