Code issues - for velocity slow down 70 to 0

Hello, How can I make a for so that it starts to slow down 70 → 0?

local bv = Instance.new("BodyVelocity",Handle)
bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
bv.Velocity = tool.Handle.CFrame.LookVector * 70
local vel = tool.Handle.CFrame.LookVector
local bv = Instance.new("BodyVelocity",Handle)
bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
bv.Velocity = tool.Handle.CFrame.LookVector * 70
local vel = tool.Handle.CFrame.LookVector

local Progress = bv.Velocity.Magnitude
local ProgressRemove = 3 

while (true) do
      bv.Velocity = tool.Handle.CFrame.LookVector * Progress
       Progress -= ProgressRemove
      if (bv.Velocity.Magnitude < 1) then
            break
      end
wait()
end

the game gets stuck and nothing happens when I do that :frowning:

yes, I forgot wait(), try now please

push my player away, I’ll share my code so you can see what’s wrong, please :frowning:

Script:

local tool = script.Parent
tool.ballEvent.OnServerEvent:Connect(function(player, event)
	local mouse = player:GetMouse()
	local Handle = tool.Handle
	tool.Parent = workspace
	Handle.CFrame = CFrame.new(Handle.Position, event)

	local bv = Instance.new("BodyVelocity",Handle)
	bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
	bv.Velocity = tool.Handle.CFrame.LookVector * 70
	local vel = tool.Handle.CFrame.LookVector

	local Progress = bv.Velocity.Magnitude
	local ProgressRemove = 3 

	while (true) do
		bv.Velocity = tool.Handle.CFrame.LookVector * Progress
		Progress -= ProgressRemove
		if (bv.Velocity.Magnitude < 1) then
			break
		end
		wait()
	end
	
	
	
	wait(.1)
	tool.Handle.BodyVelocity:Destroy()

	--- Adding the next part will result when they touch it then will like teleport to the position of the ball and like "take" it
	Handle.Touched:Connect(function(hit)
		if hit.Parent:FindFirstChild("Humanoid") then
			Handle.Anchored = false
			wait(.1)
			Handle.Anchored = true
			Handle.Anchored = false
		end
	end)
end)

script.Parent.Equipped:Connect(function()
	for i = 0, -4, -.5 do
		script.Parent.GripPos = Vector3.new(0,i,0)
		wait()
	end

	for i = -4,0,.5 do
		script.Parent.GripPos = Vector3.new(0,i,0)
		wait()
	end
end)

localscript

local tool = script.Parent
local player = game:GetService("Players").LocalPlayer

if workspace.FilteringEnabled then
	tool.Activated:Connect(function()
		local mouse = player:GetMouse()
		mouse.Button1Down:Connect(function()
			tool.ballEvent:FireServer(mouse.hit.p)
		end)
	end)
end

images

image