In a game that I am making, I wanted the players to be able to throw other characters in the direction that the player is facing using a tool. I got the tool to send the characters upwards but I don't know how to get them to go forwards. I tried using the mouse's location and multiplying that by the amount of force that I had wanted, but it sent them all over the place, instead of where I had wanted them to go. I tried using cframe and multiplying the force with different values of different objects.I'm just stumped on how to get this to work. Help would be greatly appreciated, thank you in advance, here is the script:

repeat wait() until game.Players.LocalPlayer.Character


local plr = game.Players.LocalPlayer
local MyBody = plr.Character
local mouse = plr:GetMouse()
local dist = 17

mouse.Button1Down:connect(function()
	local pos = script.Parent.Parent:findFirstChild("Torso")
	local Debounce = false
	local b = script.Parent.Parent:GetChildren()
	local dir = mouse.Hit.p
			for index, item in pairs(b) do
			if Debounce == false then	
            if item.Name == "Pikmin" and item.Available.Value == true and (pos.Position - item.Leaf.Position).magnitude < dist then 
			Debounce = true
			item.Available.Value = false
			item:MoveTo(script.Parent.Parent.Head.Position)
			
			
			local launch = Instance.new("BodyForce")
			item.Available.Charge.Disabled = false
			launch.Parent = item.Leaf
			launch.Force = script.Parent.Force.Value
			wait(.5)
			launch:remove()
			end

				else
       				return
		end
	end
end)