And that it starts to follow only if the player hits him (optional)

function findNearestPlayer(Position)
	wait(0.3)
 	local List = game.Workspace:children()
 	local Torso = nil
 	local Distance = 30
 	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) then
   			Temp = Temp2:findFirstChild("HumanoidRootPart")
   			Human = Temp2:findFirstChild("Humanoid")
   			if (Temp ~= nil) and (Human ~= nil) and (Human.Health > 0) then
    			if (Temp.Position - Position).magnitude < Distance then
     				Torso = Temp
     				Distance = (Temp.Position - Position).magnitude
    			end
   			end
 		end
 	end
	return Torso
end




while true do
 	local target = findNearestPlayer(script.Parent.HumanoidRootPart.Position)
 	if target ~= nil then
  		script.Parent.Humanoid:MoveTo(target.Position, target)
	end
end