So I recently learned about magnitude and distance. I made a part (or more specifically an egg) to test it out. Heres the code below:
local dsi = 50
game.Players.PlayerAdded:Connect(function(plate)
plate.CharacterAdded:Connect(function(charac)
local function chase()
local bp = Instance.new("BodyPosition")
bp.Parent = script.Parent
local torso = charac.Torso
bp.Position = torso.Position
script.Parent.Claws.Transparency = 0
script.Parent.Claws.Script.Disabled = false
end
while true do
wait(0.3)
local plsr= game.Players:GetChildren()
for i, play in pairs(plsr) do
if play.Character ~= nil then
local leg = play.Character["Left Leg"]
local dis = (script.Parent.Position - leg.Position).magnitude
local distance = math.floor(dis)
if distance <= (dsi) then
wait(1)
script.Parent.Script.Disabled = true
chase()
wait(0.7)
local bp = script.Parent:FindFirstChild("BodyPosition")
if bp then
bp:Destroy()
end
if not bp then
wait(1)
end
else if distance > (dsi) then
script.Parent.Claws.Transparency = 1
script.Parent.Claws.Script.Disabled = true
wait(0.4)
script.Parent.Script.Disabled = false
local bp = script.Parent:FindFirstChild("BodyPosition")
if bp then
bp:Destroy()
end
if not bp then
wait(1)
end
end
end
end
end
end
end)
end)
It may look a bit messy, but the code above works as expected. The only problem is after a player dies. The part will try to go to where the player died and the player's position at the same time. Causing it to glitch. Is there any way to fix or prevent this? Could it be that using bodymovers for this was a bad idea?

7 comments
You see, if you set the MaxForce/P too high or D too low, that usually happens. There is no way (that I know of) of fixing it other than manually adjusting it until it becomes reasonably unglitchy.
Hold on, my comment above might be irrelevant. Does the bodymovers get created more than once, and then forgotten about, causing it to glitch?
due to the fact that there are two of them arguing who should be where?
God, I am bad at interpreting things I read. Anyhow, your issue might be the fact that two bodymovers exists as opposed to only one.
I see what you mean, both sound pretty reasonable. I could probably just be creating more than one bodyposition and the script isnt deleting it in time. Or i might need to fix the properties, i'll check it out tomorrow
Its only one bodyposition thats functioning, any other leftover/duplicate bodyposition quickly gets deleted
I just found out something weird, everytime the player dies. The script runs more than once, so if i had like something like a cannon shooting a cannonball and the player died somehow. Then it would have the same problem mentioned above except now it will shoot two cannonballs instead of one. If the player died a third time, it would now shoot 3 cannon balls that would go to different positionsÂ