This script is supposed to let you fly when you use w,a,s,d and the analog stick on xbox. It works on PC but on xbox it doesn't let you move at all when the flying is enabled. Any help?

game.Players.LocalPlayer.Character:findFirstChild("Torso") 
game.Players.LocalPlayer.Character:findFirstChild("Humanoid") 
local mouse = game.Players.LocalPlayer:GetMouse() 
repeat wait() until mouse
local plr = game.Players.LocalPlayer
local torso = plr.Character.Torso  
local root = plr.Character:WaitForChild("HumanoidRootPart") 
local flying = false 
local ctrl = {f = 0, b = 0, l = 0, r = 0} 
local lastctrl = {f = 0, b = 0, l = 0, r = 0}  
local speed = 60
local userInput = game:GetService("UserInputService")
local XboxPos = Vector3.new(0,0,0)

local bg = Instance.new("BodyGyro")
bg.P = 9e4
bg.maxTorque = Vector3.new(9e9, 9e9, 9e9) 
bg.cframe = torso.CFrame 
	game.Players.LocalPlayer.Character.HumanoidRootPart.DescendantAdded:connect(function(dec)
		if dec.ClassName == "BodyGyro" and flying then
			wait()
			dec.Parent = game.Players.LocalPlayer
			repeat wait() until not flying
			if dec.Parent ~= nil then
				dec.Parent = game.Players.LocalPlayer.Character.HumanoidRootPart
			end
		end
	end)

function Fly()
	local dec = game.Players.LocalPlayer.Character.HumanoidRootPart:FindFirstChild("BG")
	if dec then 
		dec.Parent = game.Players.LocalPlayer
		coroutine.resume(coroutine.create(function()
			repeat wait() until not flying
			if dec.Parent ~= nil then
				dec.Parent = game.Players.LocalPlayer.Character.HumanoidRootPart
			end
		end))
	    end
	bg.Parent = torso
	local bv = Instance.new("BodyVelocity", torso) 
	bv.velocity = Vector3.new(0,0,0) 
	bv.maxForce = Vector3.new(9e9, 9e9, 9e9) 
		repeat wait() 
		plr.Character.Humanoid.PlatformStand = true 
			if (ctrl.l + ctrl.r) ~= 0 or (ctrl.f + ctrl.b) ~= 0 then 
				bv.velocity = ((game.Workspace.CurrentCamera.CoordinateFrame.lookVector * (ctrl.f+ctrl.b)) + ((game.Workspace.CurrentCamera.CoordinateFrame * CFrame.new(ctrl.l+ctrl.r,(ctrl.f+ctrl.b)*0,0).p) - game.Workspace.CurrentCamera.CoordinateFrame.p))*60
				lastctrl = {f = ctrl.f, b = ctrl.b, l = ctrl.l, r = ctrl.r} 
			elseif (ctrl.l + ctrl.r) == 0 and (ctrl.f + ctrl.b) == 0 and speed ~= 0 then 
				bv.velocity = ((game.Workspace.CurrentCamera.CoordinateFrame.lookVector * (lastctrl.f+lastctrl.b)) + ((game.Workspace.CurrentCamera.CoordinateFrame * CFrame.new(lastctrl.l+lastctrl.r,(lastctrl.f+lastctrl.b)*0,0).p) - game.Workspace.CurrentCamera.CoordinateFrame.p))*0 
			else 
				bv.velocity = Vector3.new(0,0,0) 
			end 
		bg.cframe = game.Workspace.CurrentCamera.CoordinateFrame 
		until not flying 
			ctrl = {f = 0, b = 0, l = 0, r = 0} 
			lastctrl = {f = 0, b = 0, l = 0, r = 0} 
			speed = 0 
			bg.Parent = nil
			bv:Destroy() 
			plr.Character.Humanoid.PlatformStand = false 
		end 
	
mouse.KeyDown:connect(function(key) 
	if key:lower() == "w" then 
		ctrl.f = 1 
	elseif key:lower() == "s" then 
		ctrl.b = -1 
	elseif key:lower() == "a" then 
		ctrl.l = -1 
	elseif key:lower() == "d" then 
		ctrl.r = 1 
	end 
end) 
	
mouse.KeyUp:connect(function(key) 
	if key:lower() == "w" then 
		ctrl.f = 0 
	elseif key:lower() == "s" then 
		ctrl.b = 0 
	elseif key:lower() == "a" then 
		ctrl.l = 0 
	elseif key:lower() == "d" then 
		ctrl.r = 0 
	end 
end)
Fly()

userInput.InputChanged:connect(function(input, processed)
	if input.UserInputType == Enum.UserInputType.Gamepad1 then
		-- Check left thumbstick and move character on change
		if input.KeyCode == Enum.KeyCode.Thumbstick1 then
			local inputPosX
			local inputPosY
			if input.Position.X > -.2 and input.Position.X < .2 then
			inputPosX = 0
			else
			inputPosX = input.Position.X
			end
			
			if -input.Position.Y > -.2 and -input.Position.Y < .2 then
			inputPosY = 0
			else
			inputPosY = -input.Position.Y
			end
			XboxPos = Vector3.new(inputPosX,0,inputPosY)
		end
	end
end)

game:GetService("UserInputService").InputBegan:connect(function(input,event)
	if event then return end
if input.KeyCode == Enum.KeyCode.ButtonB or input.KeyCode == Enum.KeyCode.V then
		if (flying == false) then
			flying = true
			Fly()
		elseif (flying == true) then
			flying = false
		end
	end
end)

local noClipEvent = game.ReplicatedStorage:WaitForChild("NoClipEvent")
local isNoClipActive = false

game:GetService("UserInputService").InputBegan:connect(function(input, event)
    if not event then
        if input.KeyCode == Enum.KeyCode.ButtonB or input.KeyCode == Enum.KeyCode.V then
            if plr.Character and plr.Character.Parent then
                isNoClipActive = not isNoClipActive
                noClipEvent:FireServer(isNoClipActive)
                end
            end
        end
    end)

2 comments

0

Why are you using mouse.KeyDown?

0

What would I have to use?