61 lines
1.8 KiB
Plaintext
Raw Normal View History

2025-07-07 23:52:31 +08:00
-- 移动行为
--> Services
local ServerStorage = game:GetService("ServerStorage")
--> Dependencies
2025-07-12 05:06:14 +08:00
local TypeList = require(ServerStorage:WaitForChild("Base").TypeList)
local Behaviour = require(ServerStorage:WaitForChild("Base").Behaviour)
local MobsProxy = require(ServerStorage:WaitForChild("Proxy").MobsProxy)
2025-07-07 23:52:31 +08:00
--------------------------------------------------------------------------------
local Move = {}
Move.__index = Move
2025-07-09 23:59:56 +08:00
setmetatable(Move, {__index = Behaviour})
2025-07-07 23:52:31 +08:00
2025-07-09 02:01:45 +08:00
function Move:Init(PlayerAI, Character: TypeList.Character, Player: Player)
2025-07-12 05:06:14 +08:00
local self = Behaviour:Init(PlayerAI, Character, script.Name)
2025-07-07 23:52:31 +08:00
self.Player = Player
2025-07-18 01:11:49 +08:00
self.Mobs = nil
2025-07-07 23:52:31 +08:00
setmetatable(self, Move)
return self
end
function Move:Check(CheckInfo: table)
if Behaviour.CheckStat(self) then return -1, self.CheckData end
2025-07-18 01:11:49 +08:00
self:CheckClean()
2025-07-07 23:52:31 +08:00
2025-07-18 01:11:49 +08:00
self.Mobs = MobsProxy:GetPlayerMobs(self.Player)
2025-07-07 23:52:31 +08:00
local closestMob, minDistance = nil, math.huge
2025-07-18 01:11:49 +08:00
for _, Mob in self.Mobs do
2025-07-07 23:52:31 +08:00
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)
2025-07-09 23:59:56 +08:00
self.Character.Humanoid:MoveTo(self.CheckData["ClosestCharacter"].Instance:GetPivot().Position)
2025-07-07 23:52:31 +08:00
task.wait(0.5)
self:ChangeExecutingState(false)
end)
end
return Move