-- 移动行为 --> Services local ServerStorage = game:GetService("ServerStorage") --> Dependencies local TypeList = require(ServerStorage.Base.TypeList) local Behaviour = require(ServerStorage.Base.Behaviour) local MobsProxy = require(ServerStorage.Proxy.MobsProxy) -------------------------------------------------------------------------------- local Move = {} Move.__index = Move function Move:Init(Character: TypeList.Character, Player: Player) local self = Behaviour:Init(Character) self.Player = Player setmetatable(self, Move) return self end function Move:Check(CheckInfo: table) if Behaviour.CheckStat(self) then return -1, self.CheckData end local PlayerMobs = MobsProxy:GetPlayerMobs(self.Player) if not PlayerMobs then warn("PlayerMobs not found") return end local closestMob, minDistance = nil, math.huge for _, Mob in PlayerMobs do if Mob.Instance and Mob.Instance.PrimaryPart then local dist = (Mob.Instance.PrimaryPart.Position - self.Character.Instance.PrimaryPart.Position).Magnitude if dist < minDistance then minDistance = dist closestMob = Mob end end end self.CheckData = {} if closestMob then self.CheckData["ClosestCharacter"] = closestMob return 10, self.CheckData end -- 返回优先级,执行数据 return -1, self.CheckData end function Move:Execute() self.ExeTask = task.spawn(function () self:ChangeExecutingState(true) self.Character.Humanoid.WalkToPart.CFrame = self.CheckData["ClosestCharacter"].Instance.PrimaryPart.CFrame task.wait(0.5) self:ChangeExecutingState(false) end) end function Move:Destroy() if self.ExeTask then task.cancel(self.ExeTask) self.ExeTask = nil end Behaviour.Destroy(self) end return Move