BodyVelocity Knockback distance is inconsistent?

So this is my KnockBack:

local bv ="BodyVelocity")
local hrp = player.Character:FindFirstChild("HumanoidRootPart")
local hitHrp = hitChar:FindFirstChild("HumanoidRootPart")
local knockBackIntensity = 100
bv.Name = "BV"
bv.MaxForce =, 0, 500000)
bv.Velocity = hrp.CFrame.lookVector * knockBackIntensity
bv.Parent = hitHrp
debris:AddItem(bv, .2)

It works great and all but the knockback distance seems to be really inconsistent?
When the player gets hit diagonally, it goes far. But when hit from the front, back, sides, it doesn’t go far.

I am guessing it has to do with the

bv.Velocity = hrp.CFrame.lookVector * knockBackIntensity

What do you think?

what is knockBackIntensity (dontwantcharlimit)

the knockBackIntensity is set to 100

what i understand from the code you gave is, it creates a BodyVelocity Object under the HumanoidRootPart and the velocity is the look vector of HRP * 100. I do not think there is something wrong there, except ofc if other parts of the script that are changing it.

nvm this: And I do not understand how that is knockback if the velocity is going where the HRP is looking.

correct me if something is wrong here

I’d use this formula:
bv.Velocity = (hrp.Position - hitHrp.Position).Unit * -knockBackInstensity

its because the roblox character friction and stuff