#if GRAPH_DESIGNER
using UnityEngine;
using Opsive.BehaviorDesigner.Runtime.Tasks;
using Opsive.BehaviorDesigner.Runtime.Tasks.Actions;
using BaseGames.Enemies;
namespace BaseGames.Enemies.AI
{
///
/// BD Action:移向玩家。
/// OnStart 缓存玩家 Transform,OnUpdate 每帧更新导航目标。
///
public class BD_MoveToPlayer : Action
{
private EnemyBase _enemy;
private Transform _playerTransform;
public override void OnStart()
{
_enemy = GetComponent();
var playerGO = GameObject.FindWithTag("Player");
if (playerGO != null) _playerTransform = playerGO.transform;
}
public override TaskStatus OnUpdate()
{
if (_enemy == null) return TaskStatus.Failure;
if (_playerTransform == null) return TaskStatus.Failure;
_enemy.MoveTo(_playerTransform.position);
_enemy.FacePlayer();
return TaskStatus.Running;
}
public override void OnEnd()
{
_enemy?.StopMovement();
}
}
}
#endif