Throwing not accurate

Don’t know why this is happening but it does, when you shoot its off by a little everytime, and when you jump its 10 times worse.

–Standing Still Example Video
robloxapp-20241119-2049335.wmv (872.2 KB)
why doesnt in the same spot everytime? sometimes it shoots low, sometimes too high.

–Jumping Example Video
robloxapp-20241119-2051400.wmv (1.2 MB)
this one doesnt need explaining. its just bad.

How could i fix this and how could i make it more accurate???

–Snippet of server script

RemoteEvent.OnServerEvent:Connect(function (plr, SetPosition, LookVector)
	local NewSpell = spell:Clone()
	NewSpell.Parent = game.Workspace
	NewSpell.Fire:SetNetworkOwner(plr)
	NewSpell["Sphere.001"]:SetNetworkOwner(plr)
	NewSpell.Fire.CanCollide = true
	NewSpell["Sphere.001"].CanCollide =true
	NewSpell["Sphere.001"].HandleWeld:Destroy()
	NewSpell:PivotTo(SetPosition)
	local LV = Instance.new("LinearVelocity")
	LV.Parent = NewSpell.Fire
	LV.Attachment0 = NewSpell.Fire.Attachment
	LV.MaxForce = 500
	LV.VelocityConstraintMode = Enum.VelocityConstraintMode.Line
	LV.LineVelocity = 500
	LV.LineDirection =  LookVector + Vector3.new(0,0.4,0)
end)

–Snippet of Local Script


local function MouseClicked(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 and ToolEquipped == true then
		local character = tool.Parent
		local Viewmodel = character:FindFirstChild("ViewportHands")

		if Viewmodel then
			local Spell = Viewmodel:FindFirstChild("Spell")
			if Spell then
				local Fire = Spell:FindFirstChild("Fire")
				print("CHECK")

			FireFire:FireServer(Fire.CFrame, mouse.Hit.LookVector)
			end
		end
	end
end

Don’t know if you even need the local script but added it just in case.