You know when you use bodyposition to move a part to a spot, it glides through the air.
You can use CFrame lerp.
local Pos1 = CFrame.new() -- Start position local Pos2 = CFrame.new(Vector3.new(10, 10, 10)) -- End position for i = 0, 1, 0.01 do Part.CFrame = Pos1:lerp(Pos2, i) -- transitions the part from Pos1 to Pos2 wait() end