Vfx not positioned and oriented properly to character

Hello I’m trying to get this output. I’m trying to make it that it always faces in front with right orientation in the humanoidrootpart.

But this is what it shows
robloxapp-20221015-1826297.wmv (4.3 MB)
I don’t really have the great knowledge of CFrames, also here is the code.
Helping hand would be nice. Thank you :smile:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TweenService = game:GetService("TweenService")


ReplicatedStorage.Remotes.QuakeAttack.QuakeAttackEvent.OnClientEvent:Connect(function(player, mouseHit, input)
	local character = player.Character
	
	local crack = ReplicatedStorage.QuakeAttack.Crack:Clone()
	crack.Size = Vector3.new(1, 1, 0)
	crack.CFrame = character.HumanoidRootPart.CFrame + character.HumanoidRootPart.CFrame.LookVector * -5
	crack.Parent = workspace.Ignore

	local shock = ReplicatedStorage.QuakeAttack.Shock:Clone()
	shock.CFrame = character.HumanoidRootPart.CFrame + character.HumanoidRootPart.CFrame.LookVector * 10
	shock.Size = Vector3.new(30, 50, 30)
	shock.Parent = workspace.Ignore

	local wave = ReplicatedStorage.QuakeAttack.Wave:Clone()
	wave.CFrame = character.HumanoidRootPart.CFrame + character.HumanoidRootPart.CFrame.LookVector
	wave.Size = Vector3.new(20, 20, 20)
	wave.Parent = workspace.Ignore

	local shockTween = TweenService:Create(shock, TweenInfo.new(2, Enum.EasingStyle.Sine), {Size = Vector3.new(50, 50, 50),CFrame = CFrame.new(0, 0, -10), Transparency = 1})
	shockTween:Play()
	shockTween.Completed:Connect(function()
		shock:Destroy()
	end)

	local waveTween = TweenService:Create(wave, TweenInfo.new(2, Enum.EasingStyle.Sine), {Size = Vector3.new(30,40,30), CFrame = CFrame.new(0, 0, -10), Transparency = 1})
	waveTween:Play()
	waveTween.Completed:Connect(function()
		wave:Destroy()
	end)

	local crackTween = TweenService:Create(crack, TweenInfo.new(0.2, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Size = Vector3.new(20, 20, 0.2)})
	crackTween:Play()
	crackTween.Completed:Connect(function()
		TweenService:Create(crack, TweenInfo.new(0.5), {Transparency = 1}):Play()
		wait(1)
		crack:Destroy()
	end)

	local quakeBall = ReplicatedStorage.QuakeAttack.QuakeBall:Clone()
	quakeBall.CFrame = character.HumanoidRootPart.CFrame
	quakeBall.Parent = workspace.Ignore

	local attachment = Instance.new("Attachment")
	attachment.Parent = quakeBall

	local lv = Instance.new("LinearVelocity")
	lv.Attachment0 = attachment
	lv.MaxForce = 1000000
	lv.VectorVelocity = CFrame.lookAt(quakeBall.Position, mouseHit.Position).LookVector * 60
	lv.Parent = quakeBall

	game.Debris:AddItem(quakeBall, 5)
end)