using System;
using Colosseum.Enemy;
using Unity.Behavior;
using Unity.Properties;
using UnityEngine;
using Action = Unity.Behavior.Action;
///
/// 현재 타겟이 보스의 공격 사거리 안에 있는지 확인하는 공통 체크 액션입니다.
///
[Serializable, GeneratePropertyBag]
[NodeDescription(
name: "Check Target In Attack Range",
story: "[Target]이 보스 공격 사거리 안에 있는지 확인",
category: "Action",
id: "16821bba281d49f699d1ac9ec613dcce")]
public partial class CheckTargetInAttackRangeAction : Action
{
[SerializeReference]
public BlackboardVariable Target;
protected override Status OnStart()
{
if (Target?.Value == null)
return Status.Failure;
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 ? Status.Success : Status.Failure;
}
}