using System; using Colosseum.Enemy; using Unity.Behavior; using Unity.Properties; using UnityEngine; using Condition = Unity.Behavior.Condition; namespace Colosseum.AI.BehaviorActions.Conditions { /// /// 현재 타겟이 보스의 공격 사거리 안에 있는지 확인하는 조건 노드입니다. /// [Serializable, GeneratePropertyBag] [Condition(name: "Is Target In Attack Range", story: "타겟이 공격 사거리 안에 있는가?", id: "57370b5b23f82a54dabc4f189a23286a")] [NodeDescription( name: "Is Target In Attack Range", story: "Is [Target] in attack range", category: "Condition/Combat")] public partial class IsTargetInAttackRangeCondition : Condition { [SerializeReference] public BlackboardVariable Target; public override bool IsTrue() { if (Target?.Value == null) return false; EnemyBase enemyBase = GameObject.GetComponent(); float attackRange = enemyBase != null && enemyBase.Data != null ? enemyBase.Data.AttackRange : 2f; float distance = Vector3.Distance(GameObject.transform.position, Target.Value.transform.position); return distance <= attackRange + 0.25f; } } }