Przegląd

Kontrolery do gier mają dodatkowe funkcje, które znacznie poprawić interakcję z graczem i zwiększyć jego zaangażowanie; Reakcja haptyczna, czujniki ruchu i światło Funkcjonalności kontrolerów do gier na Androida są szczególnie istotne urozmaicanie i wzbogacanie gier. Każda cecha w unikalny sposób stymuluje zmysłów gracza, co zachęca do bardziej znaczących i intuicyjnych interakcji w całej grze.

Reakcja na dotyk

Funkcja haptyczna w kontrolerach do gier z Androidem to kluczowa technologia, zapewnia realistyczne reagowanie na dotyk podczas rozgrywki.

Technologia haptyczna zapewnia użytkownikowi wrażenia fizyczne za pomocą wibracji ani ruchy. Na przykład, gdy w grze ma miejsce eksplozja, kontroler dzięki wibracjom gracz może realnie poczuć moc uderzenia. Dodatkowo: subtelne wibracje mogą być zsynchronizowane z dźwiękiem postaci, biegania, co daje bardziej realistyczne wrażenia. Ten typ reakcji haptycznej pozwala graczom poczuć różne wydarzenia rozgrywające się w grze.

Ta technologia maksymalizuje zaangażowanie graczy i wzmacnia reakcje emocjonalne. nadaje grze dynamikę. Ustawienia funkcji haptycznych w kontrolerach do gier na Androida nie tylko zwiększają kreatywne możliwości deweloperów gier, ale też zapewniają gracze grają bardziej realistycznie niż kiedykolwiek wcześniej.

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

Aby używać wibracji, trzeba włączyć odpowiednią funkcję i odpowiednie uprawnienia.

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

Więcej informacji na temat: VibratorManager i Manifest aplikacji.

Czujniki ruchu

Jedną z najbardziej innowacyjnych technologii zwiększających wygodę gry jest kontroler do gier na Androida z czujnikiem ruchu. Ta technologia wykrywa ruchy użytkowników i przekształca je w działania, w ramach gry, co zapewnia bardziej intuicyjną i wciągającą rozgrywkę. Na tym wstępie przyjrzymy się, jak działa czujnik ruchu Kontrolery do gier na Androida działają.

Czujniki ruchu zazwyczaj wykorzystują żyroskopy i akcelerometry do wykrywania ruchów i orientacji użytkowników.

Musi wdrożyć klasy detektorów akceleracji i żyroskopu oraz zarejestrować za pomocą menedżera czujników kontrolera.

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

Więcej informacji na temat: Czujniki ruchu oraz SensorEventListener.

Światła

Ustawienia kolorów jasności na kontrolerach do gier na Androida dodają nowy wymiar wciągające elementy gry dzięki elementom wizualnym.

Funkcja koloru światła wykorzystuje wbudowane diody LED na kontrolerze, Wyświetla różne kolory, które dynamicznie reagują na różne sytuacje w grze. Na przykład diody mogą migać na czerwono, gdy stan zdrowia zawodnika jest krytyczny lub świecą na zielono po zakończeniu konkretnej misji, dostarczając wizualne informacje zwrotne na podstawie wydarzeń w grze. Ustawienia jasnego koloru zwiększają zaangażowanie użytkowników, Zwiększa napięcie i zadowolenie z gry oraz pomaga graczom poczuć pełnię wrażeń do świata gry.

Funkcje koloru jasnego na kontrolerach do gier na Androida działają nie tylko czysto dekoracyjny – odgrywają istotną rolę w kształtowaniu nastroju gry i wrażenia użytkowników.

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

Aby używać wibracji, trzeba włączyć odpowiednią funkcję i odpowiednie uprawnienia.

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

Więcej informacji na temat: LightsManager i Manifest aplikacji.

Touchpad kontrolera

Niektóre kontrolery do gier są wyposażone w touchpada, którego można używać z różnymi wykonywać działania w grze, takie jak poruszanie się po menu czy sterowanie postaciami w grze, w bardziej intuicyjny sposób.

Touchpad na kontrolerze do gier.
Rysunek 1. Touchpad na kontrolerze do gier.

Kontrolery do gier ze zintegrowanymi touchpadami umożliwiają bezpośrednie sterowanie urządzeniem na urządzeniu z Androidem. Dotknięcie touchpada powoduje wygenerowanie wskaźnika myszy na ekranie, co pozwala co ułatwia intuicyjną nawigację jak mysz.