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