What is the best body mover for a soccer game?

Which body mover is best for a soccer game, like a ball kicking system.

Bodymovers continuously apply a force to a part. When kicking a football, the interaction between the foot and the ball is brief. It doesn’t last long. Thus, instead of using a bodymover for this, I would recommend using BasePart:ApplyImpulse(). It will instantly change the velocity of the part, and after that other physics (collisions, gravity) can normally change the trajectory of the ball.

Impulse is the change of momentum. Momentum is mass times velocity, and thus impulse is mass times velocity change.

Example code:

local kickRelativeVelocityChange = Vector3.new(0, 10, -10)

local function kickBall(humanoidRootPart, ball)
    local worldSpaceVelocityChange = (humanoidRootPart.CFrame - humanoidRootPart.Position) * kickRelativeVelocityChange
    ball:ApplyImpulse(ball:GetMass() * worldSpaceVelocityChange)
end