Just so you know I'm not the most experienced of scripters. I'm currently using a gun script made back in 2013(not my own) which from what I can tell moves a part along a raycast beam using C-Frame like

function MoveBullet(Bullet)
  while Bullet.Transparency < 0.9 and Bullet do
  local ray = Ray.new(Bullet.CFrame.p, (Bullet.CFrame.lookVector).unit*BulletSpeed/10)
  local hit, position = game.Workspace:FindPartOnRay(ray, Player.Character, false, true)
  local toIgnore = script.Parent.Parent:GetChildren()
    while hit and not hit.CanCollide and Check(hit) == "Ignore" do
      table.insert(toIgnore, hit)
      hit, position = game.Workspace:FindPartOnRayWithIgnoreList(ray, toIgnore)
    end
    if hit then
    Hit(position, Bullet, hit)
    Bullet.Transparency = 1
	elseif not hit then
	  for i = 1,10 do
	  wait(0.01)
	  Bullet.CFrame = Bullet.CFrame + Bullet.CFrame.lookVector*BulletSpeed/100 
	  end
	end
  end
end

As I said before I'm not the best at understanding what I presume to be complex code so I'm not even sure if I'm showing the correct part. Back to the main point, I've recently seen other gun scripts which fire projectiles in a similar fashion but the animation of the bullet is much more smooth than that of the scripts I use. I'm mainly wondering if there is a different alternative to this which would be more smooth and possibly lag less in large quantities.

Some examples of the 'smoother' projectiles are: https://www.roblox.com/games/600987158/Glacier-Development https://www.roblox.com/games/707512466/Alderaan