Saltar al contenido principal

! Crear un mando de juego de hardware (gamepad.connect)

Disponible a partir de las versiones posteriores a 20260805

Declaración

objeto_mando, mensaje_error = gamepad.connect([ propiedades ])

Parámetros

  • propiedades Tipo tabla; parámetro opcional para establecer las propiedades de dispositivo habituales siguientes; los valores del bloque de código son los predeterminados cuando se omiten
{
VendorID = 0x5858,
ProductID = 0x0007,
VersionNumber = 1,
Product = "XXTouch Gamepad",
Manufacturer = "XXTouch",
Transport = "USB",
}

También se pueden establecer SerialNumber y LocationID; no se garantiza que las demás propiedades surtan efecto.

Valores devueltos

  • objeto_mando Objeto de mando de juego o nil; devuelve un nuevo objeto de mando si el dispositivo se crea correctamente y nil si falla
  • mensaje_error Tipo texto; mensaje de error cuando falla la creación del dispositivo

Descripción

  • Cada llamada devuelve un nuevo objeto de mando independiente; los estados de entrada y los ciclos de vida de los distintos objetos no se afectan entre sí
  • El mando admite los joysticks izquierdo y derecho, la cruceta, los botones numéricos 1 a 32 y la entrada menu
  • La espera de la conexión cede el hilo de ejecución Lua actual
  • Si el sistema no admite esta función, gamepad.connect devuelve nil, error
  • Una conexión correcta solo indica que ya se puede llamar al objeto de mando; que la aplicación objetivo reconozca el mando y todas sus entradas depende de la versión del sistema y de la compatibilidad de la aplicación con mandos
  • Transport solo afecta a cómo el sistema local identifica el mando. Establecerlo en "Bluetooth" o "BluetoothLowEnergy" no establece una conexión Bluetooth, ni difunde ni empareja el dispositivo, ni hace que el mando aparezca en la lista Bluetooth de otros dispositivos

Ejemplo

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