How do I create an accurate knockback system?

Hi, thanks for taking time to read this, I am currently trying to make a knockback system, but as you can
see by the video, its not accurate whatsoever


code:
local RS = game:GetService(“ReplicatedStorage”)
local events = RS:WaitForChild(“Events”)
local attackEvent = events:WaitForChild(“attak”)
local char = script.Parent
local hrp = char:FindFirstChild(“HumanoidRootPart”)
local deb = game:GetService(“Debris”)

attackEvent.OnClientEvent:Connect(function(damage)

local cf = char.PrimaryPart.CFrame
local lv = cf.lookVector

local Speed = 10
local Force = 80000

local TotalForce = Force

local KnockBack = Instance.new("BodyVelocity")
KnockBack.Parent = hrp

KnockBack.MaxForce = Vector3.new(TotalForce,TotalForce,TotalForce)
KnockBack.Velocity = char:FindFirstChild("HumanoidRootPart").CFrame.LookVector * Speed
deb:AddItem(KnockBack, 0.1)

end)

Thanks!