#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:移动到指定世界坐标 Target。 /// 到达目标(IsAtDestination)后返回 Success。 /// [TaskName("Move To")] [TaskCategory("BaseGames/Enemy/Movement")] [TaskDescription("导航到目标 Transform 或世界坐标点;到达返回 Success")] public class BD_MoveTo : Action { [SerializeField] private Vector2 m_Target; private EnemyBase _enemy; public override void OnAwake() => _enemy = GetComponent(); public override TaskStatus OnUpdate() { if (_enemy == null) return TaskStatus.Failure; _enemy.MoveTo(m_Target); if (_enemy.Nav != null && _enemy.Nav.IsAtDestination()) return TaskStatus.Success; return TaskStatus.Running; } public override void OnEnd() { _enemy?.StopMovement(); } } } #endif