Pular para o conteúdo principal

! Criar um controle de jogo de hardware (gamepad.connect)

Esta função está disponível somente a partir da versão 20260805.

Declaração

objeto_do_controle, mensagem_de_erro = gamepad.connect([ propriedades ])

Parâmetro

  • propriedades Tabela, opcional: define as propriedades comuns do dispositivo abaixo; os valores no bloco de código são os padrões quando omitidos
{
VendorID = 0x5858,
ProductID = 0x0007,
VersionNumber = 1,
Product = "XXTouch Gamepad",
Manufacturer = "XXTouch",
Transport = "USB",
}

Também é possível definir SerialNumber e LocationID; não há garantia de que outras propriedades terão efeito.

Valores de retorno

  • objeto do controle Objeto de controle de jogo ou nil: retorna um novo objeto quando o dispositivo é criado com sucesso; em caso de falha, retorna nil
  • mensagem de erro Texto: mensagem de erro quando a criação do dispositivo falha

Descrição

  • Cada chamada retorna um novo objeto de controle independente; os estados de entrada e o ciclo de vida de objetos diferentes não se afetam.
  • O controle é compatível com os sticks esquerdo e direito, o direcional, os botões numéricos 1 a 32 e a entrada menu.
  • A espera pela conexão cede a thread de execução Lua atual.
  • Quando o sistema não é compatível com esta função, gamepad.connect retorna nil, error.
  • Uma conexão bem-sucedida indica apenas que o objeto de controle pode ser usado; o reconhecimento do controle e de todas as suas entradas pelo app de destino depende da versão do sistema e do suporte do app a controles.
  • Transport afeta somente a forma como o sistema local identifica o controle. Defini-lo como "Bluetooth" ou "BluetoothLowEnergy" não estabelece conexão, transmissão ou pareamento Bluetooth, nem faz o controle aparecer na lista Bluetooth de outros dispositivos.

Exemplo

local pad, err = gamepad.connect({
Product = "XXTouch Gamepad",
})
assert(pad, err)

assert(pad:press("a"))
assert(pad:press("menu"))
assert(pad:down("left_shoulder"))
assert(pad:set_stick("left", 0.5, 1))
assert(pad:set_dpad(1, 0))
assert(pad:up("left_shoulder"))
assert(pad:reset())

pad:disconnect()