It should fly when you press 2 times space and stop with 1 time, but it does not work.

local player = game:GetService("Players").LocalPlayer
local mouse = player:GetMouse()

function GetMassRecursive(p)
	local mass = 0
	for i,v in pairs(p:GetChildren())do
		if #v:GetChildren() > 0 then
			mass = mass + GetMassRecursive(v)
		end
		if v:IsA("Part") then
			print(v.Name)
			mass = mass + v:GetMass()
		end
	end
	return mass
end

local wDown = false
local sDown = false
local isFlying = false
local speed = 10
local U = game:GetService("UserInputService")
Player = game:GetService("Players").LocalPlayer
local running = false
local s = ""
local on = game.ReplicatedStorage.Events:WaitForChild('FlyOn')
U.InputBegan:connect(function(key)
if key.KeyCode == Enum.KeyCode.Space then
	s = s.."w"
	print('UnFlying')
	local tool1 = player.Character.UpperTorso
			local tools = {"Anti-Grav", "FlyingVelocity"}
			for i,v in pairs(tools) do
    local tool = tool1:FindFirstChild(v)
    if tool then
        tool:Destroy()
player.Character.Humanoid.PlatformStand = false
isFlying = false
    end
end
			
		delay(0.2,function ()
			if s ~= "ww" then
				s = ""
			end
		end)
		if s == "ww" then
		print('flying')
				if isFlying then
			speed = 0
			wait()
			speed = 10
			local f = Instance.new("BodyForce")
			f.Name = "Anti-Grav"
			f.Force = Vector3.new(0,196.2,0) * (GetMassRecursive(player.Character))
			f.Parent = player.Character.UpperTorso
			local v = Instance.new("BodyVelocity")
			v.Velocity = (mouse.Hit.p - player.Character.UpperTorso.Position).unit * 10
			v.P = 100
			v.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
			v.Name = "FlyingVelocity"
			v.Parent = player.Character.UpperTorso
			player.Character.Humanoid.PlatformStand = true
			isFlying = true
		end
	end
			if key.KeyCode == Enum.KeyCode.W then
		wDown = true
	end
	if key.KeyCode == Enum.KeyCode.S then
		sDown = true
	end
end
end)
U.InputBegan:connect(function(key)
	if key.KeyCode == Enum.KeyCode.W then
		wDown = false
	end
	if key.KeyCode == Enum.KeyCode.S then
		sDown = false
	end
end)

local MAX_SPEED = 500
local MIN_SPEED = 0
spawn(function()
	while player.Character.Humanoid.Health > 0 do
		if isFlying then
			local r = 1+(speed/500)
			player.Character:SetPrimaryPartCFrame(CFrame.new(player.Character.PrimaryPart.Position,mouse.Hit.p)*CFrame.Angles(math.pi/r,math.pi,math.pi))
			player.Character.UpperTorso.FlyingVelocity.Velocity = (mouse.Hit.p - player.Character.UpperTorso.Position).unit * speed
			if wDown then
				speed = speed + 5
				if speed > MAX_SPEED then
					speed = MAX_SPEED
				end
			elseif sDown then
				speed = speed - 5
				if speed < MIN_SPEED then
					speed = MIN_SPEED
				end
			end
		end
		
		game:GetService("RunService").RenderStepped:wait()
	end
end)