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.
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)
