A maioria das sessões da Roblox é jogada em dispositivos móveis, então é importante considerar a orientação do dispositivo e outros fatores multiplataforma ao projetar um jogo para um público amplo.
Para simplificar as entradas multiplataforma, incluindo a interação do jogador com botões virtuais, a Roblox fornece o Sistema de Ação de Entrada para definir ações como "pular", "correr" ou "disparar" e configurar vinculações para múltiplas entradas de hardware que acionam essas ações.
A Roblox também suporta recursos nativos de dispositivos móveis, como feedback háptico, gestos de toque como TouchSwipe e TouchPinch, ou funcionalidade de acelerômetro e giroscópio em dispositivos AccelerometerEnabled e GyroscopeEnabled.
Detecção do tipo de entrada
No desenvolvimento multiplataforma, é importante que você determine e responda ao tipo PreferredInput que um jogador está usando, normalmente para garantir que os elementos da interface do usuário como botões e menus na tela funcionem elegantemente e suportem a interação entre dispositivos.
Por exemplo, um dispositivo habilitado para toque assume que o toque é a entrada padrão e que botões de toque podem aparecer para ações, mas um jogador pode optar por conectar um controle bluetooth. Nesse caso, o toque permanece uma entrada válida, mas você pode supor que o jogador quer mudar para o controle conectado como o tipo de entrada primário e possivelmente usar o toque como uma entrada de backup para a interface do usuário na tela.
Veja detecção do tipo de entrada para mais informações.
Orientação do dispositivo
Por padrão, os jogos da Roblox são executados em modo paisagem, permitindo que o jogo mude entre a orientação "esquerda" e "direita" ao girar o dispositivo do jogador. No entanto, os jogos podem ser bloqueados em uma orientação específica, se desejado.
Existem cinco modos de orientação diferentes, incluindo dois modos baseados em sensor e três modos bloqueados.¹ Cada um deles pode ser definido como a orientação padrão através de StarterGui.ScreenOrientation, acessível através da janela de Propriedades do Studio.
| Modos de Sensor | |
|---|---|
| LandscapeSensor | A configuração padrão da Roblox na qual o jogo sempre aparece em modo paisagem (sem modo retrato) e o dispositivo detecta sua orientação física para garantir que a visão do jogo esteja sempre orientada para cima. |
| Sensor | O dispositivo detecta sua orientação física para garantir que a visão do jogo esteja sempre orientada para cima, mudando entre os modos paisagem e retrato conforme necessário. |
| Modos Bloqueados | |
| LandscapeLeft | Em dispositivos com uma barra de navegação/home virtual, sua região de toque está na parte inferior da tela. Em dispositivos com um botão home físico, o botão home está à esquerda da tela. |
| LandscapeRight | Em dispositivos com uma barra de navegação/home virtual, sua região de toque está na parte inferior da tela. Em dispositivos com um botão home físico, o botão home está à direita da tela. |
| Portrait | Em dispositivos com uma barra de navegação/home virtual, sua região de toque está na parte inferior da tela. Em dispositivos com um botão home físico, o botão home está abaixo da tela. |
Além da propriedade padrão StarterGui.ScreenOrientation, você pode mudar a orientação durante o gameplay através de PlayerGui.ScreenOrientation. Isso pode ser útil quando um jogo precisa impor uma orientação, como bloquear a visão em Portrait para um minijogo.
O seguinte código em um LocalScript define a orientação da tela para retrato após um pequeno atraso:
LocalScript - Mudar Orientação da Tela para Retratolocal Players = game:GetService("Players")local player = Players.LocalPlayerlocal playerGui = player.PlayerGuitask.wait(5)playerGui.ScreenOrientation = Enum.ScreenOrientation.Portrait
Finalmente, você pode detectar mudanças na orientação da tela durante o gameplay ao ouvir as mudanças de valor na propriedade PlayerGui.CurrentScreenOrientation.
LocalScript - Detectar Mudanças na Orientação da Tela
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local function onOrientationChange()
print("Orientação mudada para", playerGui.ScreenOrientation)
end
playerGui:GetPropertyChangedSignal("ScreenOrientation"):Connect(onOrientationChange)
Feedback háptico
A maioria dos dispositivos móveis possui motores embutidos para fornecer feedback háptico. Adicionar vibrações e tremores pode melhorar muito a experiência do jogador e fornecer um feedback sutil além de visuais ou áudio.
A Roblox suporta háptica para dispositivos com capacidade háptica, incluindo a maioria dos dispositivos iPhone, Pixel e Samsung Galaxy. O feedback háptico é gerenciado através de instâncias de HapticEffect que podem ser definidas para um tipo específico Type, como GameplayCollision ou UIClick.
Uma vez que um HapticEffect esteja em funcionamento, você pode iniciá-lo através do método Play(), por exemplo:
local Workspace = game:GetService("Workspace")local effect = Instance.new("HapticEffect")effect.Type = Enum.HapticEffectType.GameplayExplosioneffect.Parent = Workspace-- Reproduzir o efeito hápticoeffect:Play()