Advertisement
chromeJ

NPC Follow

Jun 19th, 2021
887
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local NPC = workspace.Dummy
  2. function getClosestPlayer()
  3.     local closest_player, closest_distance = nil, 200
  4.     for i, player in pairs(workspace:GetChildren()) do
  5.         if player:FindFirstChild("Humanoid") and player ~= NPC then
  6.             local distance = (NPC.PrimaryPart.Position - player.PrimaryPart.Position).Magnitude
  7.             if distance < closest_distance then
  8.                 closest_player = player
  9.                 closest_distance = distance
  10.             end
  11.         end
  12.     end
  13.     return closest_player, closest_distance
  14. end
  15. while true do
  16.     local player, distance = getClosestPlayer()
  17.     if player and distance > 10 then
  18.         NPC.Humanoid:MoveTo(player.PrimaryPart.Position)
  19.         local stopped
  20.         NPC.Humanoid.MoveToFinished:Connect(function()
  21.             stopped = true
  22.         end)
  23.         repeat
  24.             local distance = (NPC.PrimaryPart.Position-player.PrimaryPart.Position).Magnitude
  25.             if distance < 10 then
  26.                 NPC.Humanoid:MoveTo((NPC.HumanoidRootPart.CFrame*CFrame.new(0,0,-3)).p)
  27.                 break
  28.             end
  29.             wait()
  30.         until stopped == true
  31.     else
  32.         wait(1)
  33.     end
  34.    
  35. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement