/* * @Author: 白哉 * @Description: * @Date: 2025年10月21日 星期二 17:10:56 * @Modify: */ using System; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; namespace NodeCanvas.Tasks.Actions { [Name("判断目标点是否可达")] [Category("AI节点")] [Serializable] public class AIParamCheckTargetGridCanArrive : BaseActionTask { protected override string desc => $"判断目标点是否可达"; protected override void OnExecute() { base.OnExecute(); // 直接从Blackboard获取AICalculatorData var data = blackboard.GetVariable("Data"); if (data?.value?.TargetParam == null) { EndAction(false); return; } var map = data.value.TargetParam.MapData; var player = data.value.TargetParam.PlayerData; var unit = data.value.TargetParam.UnitData; var end = data.value.TargetParam.TargetGridData; var start = unit?.Grid(map); if (start == null || end == null) { EndAction(false); return; } var path = PathFinder.FindPath((int)map.MapConfig.Width, (int)map.MapConfig.Height, new (start.Pos.X, start.Pos.Y), new (end.Pos.X, end.Pos.Y), map, player); EndAction(path.found); } } }