#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