#if GRAPH_DESIGNER using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; using BaseGames.Enemies; namespace BaseGames.Enemies.AI { /// /// BD Action:移向玩家。 /// OnStart 从 EnemyBase.PlayerTransform 获取玩家引用(由 _onPlayerSpawned 事件缓存, /// 避免 FindWithTag 全场景扫描)。OnUpdate 每帧更新导航目标。 /// [TaskName("Move To Player")] [TaskCategory("BaseGames/Enemy/Movement")] [TaskDescription("持续向玩家方向移动,失去视线或超出追踪距离返回 Failure")] public class BD_MoveToPlayer : Action { private EnemyBase _enemy; public override void OnAwake() => _enemy = GetComponent(); public override void OnStart() { _enemy.SetAiPhase(AiPhase.Chase); } public override TaskStatus OnUpdate() { if (_enemy == null) return TaskStatus.Failure; if (_enemy.PlayerTransform == null) return TaskStatus.Failure; _enemy.MoveTo(_enemy.PlayerTransform.position); _enemy.FacePlayer(); return TaskStatus.Running; } public override void OnEnd() { _enemy?.StopMovement(); } } } #endif