Before you get into input methods, first you may also want to consider either changing your core game, or not making your game on other platforms at all. 3D games don’t tend to play well on mobile, at least not well enough to compete with PC or consoles.
On mobile you need to fit all of your buttons on one screen, and for something fast-paced and multi-platform like an FPS on Roblox, everything needs to be instantly accessible and easy to use – BUT mobile doesn’t have a lot of screen space, and everything needs to be shown on screen (therefore covering the game world so the player can’t see it). Controllers can be tedious in some situations, too, however they’re still much better than mobile.
I don’t mean to shoot down your idea, but those are legitimate problems that you need to consider and solve before you get too deep in your project. Most of the time a good solution is just simplify – remember the target audience (if you’re going for a popular game) will be kids. Make it easy to play. Phantom Forces is popular even though it has lots of keybinds because you can have fun playing even without knowing the keybinds (aside from left click, right click, WASD and space lol) – also note that it’s not even on mobile at all.
On mobile, you may need to condense your controls. This could mean having one button do multiple things; for example, the jump button in Minecraft mobile also let you toggle sneaking. You want to make your onscreen buttons as small and unobtrusive as possible while still being visible and easy to touch – semi-transparent circles or squares will work well for this.
A radial menu for some things on a controller is good. You can also use the D-pad (left, right, up, down) and some of the X, Y, B, A, RB, LB, R3, L3 buttons to work like keys. Those give you lots to work with. You can also again make one button do multiple things – for example, in Dark Souls, quickly releasing and pressing the sprint button while sprinting will make your character jump.
Anyway, best of luck