Übersicht

Controller verfügen über zusätzliche Funktionen, die verbessern die Interaktion und das Immersion der Spieler. Haptik, Bewegungssensoren und Licht von Android-Gamecontrollern sind besonders wichtig, das Spielerlebnis zu vertiefen und zu bereichern. Jede Funktion stimuliert individuell die Sinne des Spielers, was zu sinnvolleren und intuitiveren Interaktionen für das Spiel.

Haptik

Die Haptik-Funktion von Android-Gamecontrollern ist eine wichtige Technologie, und bietet realistisches, haptisches Feedback während des Spiels.

Die Haptiktechnologie vermittelt Nutzern durch Vibrationen physische Wahrnehmungen oder Bewegungen. Wenn zum Beispiel im Spiel eine Explosion auftritt, kann der Controller vibriert, sodass der Spieler den Aufprall realistisch spüren kann. Außerdem sanfte Vibrationen können mit dem Geräusch einer gehenden oder und sorgt so für ein lebensechteres Erlebnis. Diese Art von haptischem Feedback Spieler haben die Möglichkeit, verschiedene Ereignisse im Spiel zu spüren.

Diese Technologie sorgt für maximale Konzentration der Spieler, verstärkt emotionale Reaktionen und intensiviert die Dynamik des Spiels. Haptik-Einstellungen in Android-Gamecontrollern erweitern nicht nur die kreativen Möglichkeiten für Spieleentwickler, mit einem realistischeren Spielerlebnis als je zuvor.

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

Für die Vibration werden eine Funktion und eine Berechtigung festgelegt.

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

Weitere Informationen zu VibratorManager und App-Manifest.

Bewegungssensoren

Eine der innovativsten Technologien zur Verbesserung des Gameplays ist die Android-Controller mit Bewegungssensor Mit dieser Technologie erfasst die physischen Bewegungen der Nutzenden und wandelt diese Daten in Aktionen um. für ein intuitiveres und intensiveres Spielerlebnis. In dieser Einführung erfahren wir, wie der Bewegungssensor Android-Controller funktionieren.

Bewegungssensoren verfügen in der Regel über Gyroskope und Beschleunigungsmesser, um Bewegungen und Ausrichtungen der Nutzenden.

Es muss Beschleunigungs- und Gyroskop-Listener-Klassen implementiert und registriert werden. mit dem Sensor Manager des Controllers.

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) {
  }
}

Weitere Informationen zu Bewegungssensoren und SensorEventListener

Lichter

Mit den Farbeinstellungen für die Beleuchtung von Android-Gamecontrollern wird eine neue Dimension Immersives Gameplay durch visuelle Elemente.

Dank der im Controller eingebauten LED-Leuchten verschiedene Farben, die dynamisch auf verschiedene Spielszenarien reagieren. Die Lichter blinken beispielsweise rot, wenn die Gesundheit des Spielers kritisch ist oder nach Abschluss einer bestimmten Mission grün leuchten und visuelles Feedback geben. basierend auf spielinternen Ereignissen. Diese hellen Farbeinstellungen verbessern das Nutzer-Engagement, die Spannung und Freude am Spiel erhöhen und den Spielern ermöglichen, vollständig in die Spielwelt einfließen lassen.

Die hellen Farbfunktionen von Android-Gamecontrollern dienen mehr als rein dekorativen Zweck, spielt eine wichtige Rolle dabei, die Stimmung des Hauses und die User Experience verbessern.

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

Für die Vibration werden eine Funktion und eine Berechtigung festgelegt.

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

Weitere Informationen zu LightsManager und App-Manifest.

Controller-Touchpad

Einige Controller haben ein Touchpad, das für eine Vielzahl In-Game-Aktionen wie das Navigieren in Menüs oder die Steuerung von Spielcharakteren in einem auf intuitivere Art und Weise.

<ph type="x-smartling-placeholder">
</ph> Touchpad auf dem Controller.
Abbildung 1: Touchpad auf dem Controller.

Controller mit integrierten Touchpads ermöglichen die direkte Gerätesteuerung auf Android Beim Berühren des Touchpads wird ein Mauszeiger auf dem Bildschirm generiert, für eine intuitive Navigation in Form einer Maus.