What do you want to achieve?
I want my ai zombie to stop in the middle of moving in a path and go to a moving target.
What is the issue? Include screenshots / videos if possible!
My ai does pathfind to the player, but whenever the player moves, the ai first finishes the original path first, then to the new position to the player. I don’t want this to happen. Instead, I want it to be able to pathfind a new course every second in the game to the new player, this is so the ai won’t turn so slow.
What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I’ve tried editing the code and looking at it for errors. I’ve also tried looking at other tutorials to see if I did anything wrong, but none of it seems to be working. Any ideas on how I can fix this?
local larm = script.Parent:FindFirstChild("Left Arm") local rarm = script.Parent:FindFirstChild("Right Arm") local CanAttack = true local Damage = 20 local PathFindingService = game:GetService("PathfindingService") function findNearestTorso(pos) local list = game.Workspace:children() local torso = nil local dist = 100000000 local temp = nil local human = nil local temp2 = nil for x = 1, #list do temp2 = list[x] if (temp2.className == "Model") and (temp2 ~= script.Parent) and temp2.Name ~= script.Parent.Name then temp = temp2:findFirstChild("HumanoidRootPart") human = temp2:findFirstChild("Humanoid") if (temp ~= nil) and (human ~= nil) and (human.Health > 0) then if (temp.Position - pos).magnitude < dist then torso = temp dist = (temp.Position - pos).magnitude end end end end return torso end local function Attack(Torso) if CanAttack then CanAttack = false local humanoid = Torso.Parent:WaitForChild("Humanoid") humanoid.Health = humanoid.Health - Damage wait(1) CanAttack = true end end while true do local Target = findNearestTorso(script.Parent.HumanoidRootPart.Position) if Target then local Newpath = PathFindingService:CreatePath() Newpath:ComputeAsync(script.Parent.HumanoidRootPart.Position,Target.Position) local Waypoints = Newpath:GetWaypoints() for i,v in (Waypoints) do script.Parent.Humanoid:MoveTo(v.Position) script.Parent.Humanoid.MoveToFinished:Wait() end script.Parent.Humanoid:MoveTo(Target.Position) local Distance = (script.Parent.HumanoidRootPart.Position - Target.Position).Magnitude if Distance <= 6 then Attack(Target) end end task.wait() end
Please let me know if there is a topic similar to this, or if I am in the wrong category. If the things you say are true, I will try to take down this post asap.