Need Help Making Plane System Controls for Mobile Players

My development group recently released a new game, and it’s been performing pretty well recently. The only real complaint I have heard about it was spawn killing/camping (which I believe to have fixed), and mobile controls for the planes.

Personally, I think the mobile controls are “good enough” for the game, but that’s from my experience. I will say, occasionally, they don’t seem to work very well, and they will shift a bit to the right and be uncontrollable before they crash and blow up. This is rare from my experience on mobile, but more than a few players have complained about it.

For reference, here are the plane’s mobile controls in action. You tap on your screen to change the direction/orientation of the plane, and you can also use your mobile thumbstick for this too. However, the thumbstick isn’t always the best, and if you tap the buttons on the right of the screen for things like the machine guns etc., it can screw with your direction.

In Military Tycoon, their controls for mobile are based entirely on the thumbstick for changing the direction/orientation of the planes, as seen in this video.

I am looking for information on how to use the ThumbStick on mobile for plane control, like seen in Military Tycoon

For reference, here is (some) of the code used for the controls for the planes with my plane system:

local val = script:WaitForChild("plane")
local connection = val.Value
local gyro = engine:WaitForChild("BodyGyro")
local engine = connection:WaitForChild("Engine")
local USINS=game:getService("UserInputService")
local clickMove = USINS.TouchEnabled
local Mouse = player:GetMouse()
local Down = false
local LastHit

if clickMove then
	Mouse.Button1Down:connect(function()
		if uiDown == false then
			Down = true
			LastHit = Mouse.Hit
			while Down do
				LastHit = Mouse.Hit
				wait()
			end
		end	
	end)
	Mouse.Button1Up:connect(function()
		Down = false
	end)
end

game["Run Service"].RenderStepped:Connect(function(step)
      local BankAngle = GetBankAngle(Mouse)
      if clickMove then
          ---- this is for mobile. its essentially just a tap to change your plane's direction but... doesn't seem to work too well for a lot of players. I personally rarely have issues with it
          gyro.CFrame = CFrame.new(engine.Position,clickMove and (LastHit and LastHit.Position) or Mouse.Hit.Position) --Camera.CFrame
      else
    ------ this is for PC and XBOX controls, where we bank the plane based on their cursor, etc
          gyro.cframe = (Mouse.Hit*CFrame.Angles(0,0,BankAngle))
      end
end)

Hey there, I record you try a control system using the devices gyroscope if available and if not just the default thumb stick.

Like when a player tilts his or her phone around? I would much rather stick to using the thumbstick, as seen in my Military Tycoon example.

Sorry for the late reply, but yea that is what I meant.