Attempting to make reliable knockback

I’ve tried everything from BodyVelocity to ApplyImpulse to VectorForce.

I’m now trying to use AssemblyLinearVelocity and once again having issues.
As you can see in this video, the part displays the direction of where the velocity should be applied. It works sometimes but you can see at the end for some reason it goes towards my character.

Example

function MovesManager:Knockback(Attacker, Target, Power, Length, FaceDirection, OnEnd, ExtraSettings)
    if not Target.PrimaryPart:FindFirstChildWhichIsA("BodyVelocity") then
        Target:FindFirstChildWhichIsA("Humanoid").AutoRotate = false
        Target.PrimaryPart.AssemblyLinearVelocity = ((ExtraSettings["LookDirection"] or Attacker.PrimaryPart.CFrame.LookVector) * (Power*3))
        print(Target.PrimaryPart.AssemblyLinearVelocity)

        if FaceDirection and FaceDirection == true then
            Target.PrimaryPart.CFrame = CFrame.new(Target.PrimaryPart.Position, Attacker.PrimaryPart.Position)
        end

        task.delay(Length, function()
            Target:FindFirstChildWhichIsA("Humanoid").AutoRotate = true
            if OnEnd then OnEnd() end
        end)
    end
end

This is the code i’m using for knockback, but it seems to happen mostly on the kick, sure it could be since it does a full spin but I call the function with the LookVector before the animation and as you can see, the part does seem to go in the right direction

1 Like