So my gun is working. Everything's fine. Except. I want the gun shooting to be smooth. And not glitchy what so ever. However. Its not. It hesitates the slightest bit when shot to actually go ahead into the world. And I cant figure out a way to fix it. So here's my scripts

LocalScript

local Tool = script.Parent
local plr = game.Players.LocalPlayer
local mouse = plr:GetMouse()
local speed = 100
print("VariablesPrinted")
Tool.Activated:Connect(function()
	script.Parent.Shot:FireServer(mouse.Hit.LookVector*speed)
end)

Script

local debris = game:GetService("Debris")
local tool = script.Parent
local shootevent = script.Parent.Shot

shootevent.OnServerEvent:Connect(function(plr, mouse)
	local bullet = Instance.new("Part", workspace)
	bullet.Size = Vector3.new(1,1,1)
	bullet.Name = "Bullet"
	bullet.CFrame = tool.Handle.CFrame
	local BodyVelocity = Instance.new("BodyVelocity", bullet)
	BodyVelocity.P = Vector3.new(40000,40000,40000) * 3
	BodyVelocity.Velocity = mouse
	debris:AddItem(bullet,60)
end)

Seems like it would work fine. And mainly it does. But that slight hesitation when you shoot with it at the beginning ruins it for me. Can someone help me come up with solutions?