I have created a basic zombie off a tutorial but I need to redo movement into pathinding so that it does not like get stuck in front of objects so it can make it's way round the map to find the player and kill him for soul purpose of the game. However I don't know how to do this as it is very tricky. Please help!
Here is the current script:
torso = script.Parent.Torso
range = 50
armDmg=5
torDmg=10
target = nil
function findNearestTarget()
plrs = game.Players:GetChildren()
for i,plr in ipairs (plrs) do
if plr.Character ~= nil then
if plr.Character:findFirstChild("Humanoid") and plr.Character.Humanoid.Health>0 then
tor = plr.Character.Torso
if target ~= nil then
if(torso.Position-tor.Position).magnitude < (torso.Position-target.Torso.Position).magnitude then
print(plr.Name.." is in range")
target = plr.Character
break
end
elseif (torso.Position-tor.Position).magnitude <= range then
print(plr.Name.." is in range")
target = plr.Character
break
end
end
end
end
end
function hitArm(hit)
if hit.Parent ~= nil and hit ~=nil then
if hit.Parent:findFirstChild("Humanoid") then
hit.Parent.Humanoid:TakeDamage(armDmg)
end
end
end
function hitTorso (hit)
if hit.Parent ~= nil and hit ~=nil then
if hit.Parent:findFirstChild("Humanoid") then
hit.Parent.Humanoid:TakeDamage(torDmg)
end
end
end
script.Parent["Left Arm"].Touched:connect(hitArm)
script.Parent["Right Arm"].Touched:connect(hitArm)
script.Parent["Torso"].Touched:connect(hitTorso)
while true do
wait (.1)
findNearestTarget()
if target ~= nil then
script.Parent.Zombie:MoveTo(target.Torso.Position,target.Torso)
end
end
