Lineforce inconsistent in moving player

Hi, I am currently attempting to make a script which grapples players towards a character, for this I intend to use a lineforce. However the lineforce appears to glitch, teleporting the player instantly instead of gradually moving them, as some lineforce previews show.

local function Move(part, goal)
		
		if part.Anchored == false then
			
			local lineForce = Instance.new("LineForce")
			local att = Instance.new("Attachment")

			lineForce.Magnitude = 9000
			lineForce.ApplyAtCenterOfMass = false

			local dist

			local lineClone = lineForce:Clone()

			if (part.Position - goal.Position).Magnitude > stopDist then

				local lineClone = lineForce:Clone()

				local att0 = att:Clone()
				att0.Parent = part

				local att1 = att:Clone()
				att1.Parent = goal

				lineClone.Attachment0 = att0
				lineClone.Attachment1 = att1
				lineClone.Parent = part
				
				local rope = ReplicatedStorage:WaitForChild("Attacks"):WaitForChild("Yoinker"):WaitForChild("Rope"):Clone()
				rope.Attachment0 = att0
				rope.Attachment1 = att1
				rope.Parent = part

				repeat
					dist = (part.Position - goal.Position).Magnitude
					wait()
				until
				dist < stopDist

				lineClone:Destroy()
				att0:Destroy()
				att1:Destroy()
				rope:Destroy()

			end
			
		end
	
	end

Thanks.

You could instead either use a BodyVelocity/BodyPosition or decrease the rope length every frame.

Sorry, i forgot to clarify that the rope isnt an actual rope, but instead a beam to replicate the effect. However I have been thinking about using bodymovers, but haven’t because supposedly it should be used less or something. I’ll try using one of those thanks