Well if you’re gonna use a trail, then I suggest just repositioning the related attachments side-to-side in a loop. Make sure that the part you are shooting has its front face in the direction of where it’s going, and make sure that your attachments are on opposite sides of it as well.
You can very easily make it wiggle by doing something like this while it’s moving:
local cos = math.cos;
local movementRate = 3;
local movementScale = .6;
game:GetService("RunService").Stepped:Connect(function(DT)
local t = tick();
local e = cos(t * movementRate)* movementScale;
local z = Vector3.new(e, e, e);
script.Parent.Position += z;
end)