My Code Wont Push Back player only when Q is pressed

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!
    I would like players to be pushed back when hit by the ball
  2. What is the issue? Include screenshots / videos if possible!
    Only the “Short” One pushes the player back then deletes the bodyforce
  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    Ive tried everything i could think of but anything after this wait doesnt work for the q
    After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!
local function onTouch(part)
	if part.Parent:FindFirstChild("Humanoid")  then
		print("yup")
		local pushRoot = part.Parent:FindFirstChild("HumanoidRootPart")


		if pushRoot and not pushRoot:FindFirstChild("PushF") then
			local pushF = Instance.new("BodyVelocity")
			pushF.Name = "PushF"
			pushF.Parent = pushRoot

			pushF.MaxForce = Vector3.new(1000000, 1000000, 1000000)
			pushF.Velocity = script.Parent.Velocity * .2 --(-pushRoot.CFrame.lookVector) * 20
			pushRoot.Velocity =  script.Parent.Velocity * .2
			print("s")

			wait(1)  -- nothing after HERE works
			print("deleted")
			--pushF.Velocity = Vector3.new(0,0,0) --(-pushRoot.CFrame.lookVector) * 20
			pushF:Destroy()
			
			
		end
		--wait(2)
		--script.Parent:Destroy()
	end
end



script.Parent.Touched:Connect(onTouch)

Please do not ask people to write entire scripts or design entire systems for you. If you can’t answer the three questions above, you should probably pick a different category.

Try and Set the pushF parent to the players Torso instead.

local part = script.Parent

local function onTouch(hit)
	local hitModel = hit:FindFirstAncestorOfClass("Model")
	if hitModel then
		local hitHuman = hitModel:FindFirstChildOfClass("Humanoid")
		if hitHuman then
			local hitHRP = hitModel:FindFirstChild("HumanoidRootPart")
			if hitHRP then
				local currentPush = hitHRP:FindFirstChild("Push")
				if not currentPush then
					currentPush = Instance.new("BodyVelocity")
					currentPush.Name = "Push"
					currentPush.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
					currentPush.Velocity = -(hitHRP.CFrame.lookVector) * 20
					currentPush.Parent = hitHRP
					task.wait(1)
					currentPush:Destroy()
				end
			end
		end
	end
end

part.Touched:Connect(onTouch)

How’s this?