Descripción general

Los controles de juegos están equipados con funciones adicionales que mejoran la interacción y la inmersión de los jugadores. La tecnología háptica, los sensores de movimiento y la luz de los controles de juegos de Android son fundamentales lo que profundiza y enriquece la experiencia de los videojuegos. Cada función estimula de manera única los sentidos del jugador, lo que fomenta interacciones más significativas e intuitivas el partido.

Tecnología háptica

La tecnología táctil de los controles de juegos de Android es una tecnología crucial proporciona respuestas táctiles realistas durante el juego.

La tecnología táctil transmite sensaciones físicas al usuario a través de vibraciones o movimientos. Por ejemplo, cuando se produce una explosión en el juego, el controlador vibra, lo que le permite al jugador sentir el impacto de manera realista. Además: vibraciones sutiles pueden sincronizarse con el sonido de un personaje que camina o corriendo, lo que ofrece una experiencia más realista. Este tipo de respuesta táctil les permite a los jugadores sentir de manera física varios eventos que ocurren en el juego.

Esta tecnología maximiza la inmersión del jugador, amplifica las respuestas emocionales enriquece la dinámica del juego. Configuración de tecnología táctil en controles de juegos para Android no solo amplían las posibilidades creativas para los desarrolladores de juegos, a los jugadores con una experiencia de juego más realista que nunca.

fun triggerVibrationMultiChannel(
  deviceId: Int, leftIntensity: Int, leftDuration: Int,
  rightIntensity: Int, rightDuration: Int) {
  val inputDevice = InputDevice.getDevice(deviceId)
  val vibratorManager = inputDevice!!.vibratorManager
  if (vibratorManager != null) {
    val vibratorIds = vibratorManager.vibratorIds
    val vibratorCount = vibratorIds.size
    if (vibratorCount > 0) {
      // We have an assumption that game controllers have two vibrators
      // corresponding to a left motor and a right motor, and the left
      // motor will be first.
      updateVibrator(vibratorManager.getVibrator(vibratorIds[0]), leftIntensity, leftDuration)
      if (vibratorCount > 1) {
        updateVibrator(vibratorManager.getVibrator(vibratorIds[1]), rightIntensity, rightDuration)
      }
    }
  }
}

fun updateVibrator(vibrator: Vibrator?, intensity: Int, duration: Int) {
  if (vibrator != null) {
    if (intensity == 0) {
      vibrator.cancel()
    } else if (duration > 0) {
      vibrator.vibrate(VibrationEffect.createOneShot(duration.toLong(), intensity))
    }
  }
}

Para usar la vibración, se establece una función y un permiso.

<application ...>
  ...
  <uses-feature android:name="android.hardware.gamepad" android:required="true"/>
  <uses-permission android:name="android.permission.VIBRATE"/>
  ...
</application>

Para obtener más información VibratorManager y Manifiesto de la app.

Sensores de movimiento

Una de las tecnologías más innovadoras que mejoran las experiencias de juego es Control de juegos para Android con sensor de movimiento integrado. Esta tecnología precisamente detecta los movimientos físicos de los usuarios y convierte esos datos en acciones dentro del juego, lo que brinda una experiencia más intuitiva e inmersiva. En esta introducción, exploraremos las características del sensor de movimiento en Los controles de juegos para Android funcionan.

Los sensores de movimiento suelen incorporar giroscopios y acelerómetros para detectar la y las orientaciones de los usuarios.

Necesita implementar clases de objetos de escucha de aceleración y giroscopio, y registrar estos objetos de escucha con el administrador de sensores del controlador.

fun setIntegratedAccelerometerActive(deviceId: Int) {
  val device = InputDevice.getDevice(deviceId)
  val sensorManager = device?.sensorManager
  val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
  if (accelerometer != null) {
    val accelerometerListener =
      GameControllerAccelerometerListener(accelerometer)
    sensorManager.registerListener(
      accelerometerListener, accelerometer,
      SensorManager.SENSOR_DELAY_GAME
    )
  }
}

fun setIntegratedGyroscopeActive(deviceId: Int) {
  val device = InputDevice.getDevice(deviceId)
  val sensorManager = device?.sensorManager
  val gyroscope = sensorManager?.getDefaultSensor(Sensor.TYPE_GYROSCOPE)
  if (gyroscope != null) {
    val gyroscopeListener = GameControllerGyroscopeListener(gyroscope)
    sensorManager.registerListener(
      gyroscopeListener, gyroscope,
      SensorManager.SENSOR_DELAY_GAME
    )
  }
}

class GameControllerAccelerometerListener(private val listenerAccelerometer: Sensor?) :
  SensorEventListener {
  override fun onSensorChanged(event: SensorEvent) {
    if (listenerAccelerometer != null) {
      synchronized(listenerAccelerometer) {
        if (event.sensor == listenerAccelerometer) {
          Log.d("Accelerometer",
            "onSensorChanged " + event.values[0] + ", "
            + event.values[1] + ", " + event.values[2])
        }
      }
    }
  }

  override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
  }
}

class GameControllerGyroscopeListener(private val listenerGyroscope: Sensor?) :
  SensorEventListener {
  override fun onSensorChanged(event: SensorEvent) {
    if (listenerGyroscope != null) {
      synchronized(listenerGyroscope) {
        if (event.sensor == listenerGyroscope) {
          Log.d("Gyroscope",
            "onSensorChanged " + event.values[0] + ", " +
            event.values[1] + ", " + event.values[2])
        }
      }
    }
  }

  override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
  }
}

Para obtener más información Sensores de movimiento y SensorEventListener

Luces

La configuración del color claro de los controles de juegos de Android agrega una nueva dimensión de la inmersión en el juego mediante elementos visuales.

La función de color de la luz usa luces LED integradas en el control para mostrar varios colores, que responden dinámicamente a distintas situaciones de juego. Por ejemplo, las luces podrían parpadear en rojo si la salud del jugador es crítica se iluminan en verde cuando se completa una misión específica, lo que proporciona comentarios visuales basadas en eventos en el juego. Esta configuración de color claro profundiza la participación del usuario, Aumenta el suspenso y disfrute del juego, y ayuda a los jugadores a sumergirse más. en el mundo del juego.

Las funciones de color claro en los controles de juegos de Android ofrecen más de un un mero propósito decorativo; desempeña un papel importante a la hora de establecer el ambiente del y mejorar la experiencia del usuario.

fun changeControllerLightColor(deviceId: Int, color: Int) {
  val device = InputDevice.getDevice(deviceId)
  device?.let {
    if (it.sources and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK) {
      val lightsManager = device.lightsManager
      lightsManager?.let { manager ->
        manager.lights.forEach { light ->
          val stateBuilder = LightState.Builder()
          stateBuilder.setColor(color)
          val requestBuilder = LightsRequest.Builder()
          requestBuilder.addLight(light, stateBuilder.build())
          val lightsSession = lightsManager.openSession()
          lightsSession.requestLights(requestBuilder.build())
        }
      }
    }
  }
}

Para usar la vibración, se establece una función y un permiso.

<application ...>
  ...
  <uses-feature android:name="android.hardware.gamepad" android:required="true"/>
  <uses-permission android:name="android.permission.LIGHTS" />
  ...
</application>

Para obtener más información LightsManager y Manifiesto de la app.

Panel táctil del control

Algunos controles de juegos incluyen un panel táctil que se puede usar para una variedad de acciones dentro del juego, como navegar por menús o controlar personajes en una de forma más intuitiva.

Panel táctil en el control de juegos.
Figura 1: Panel táctil en el control de juegos

Los controles de juegos con paneles táctiles integrados ofrecen control directo del dispositivo en Android Tocar el panel táctil genera un puntero de mouse en pantalla, lo que permite para lograr una navegación intuitiva similar a un mouse.