Ringkasan

Pengontrol {i>game<i} dilengkapi dengan fitur tambahan yang secara signifikan meningkatkan interaksi dan pengalaman pemain. Haptic, sensor gerakan, dan cahaya fungsi pengontrol game Android sangat berperan dalam memperdalam dan memperkaya pengalaman bermain game. Setiap fitur menstimulasi secara unik indra pemain, mendorong interaksi yang lebih bermakna dan intuitif dalam game.

Sentuhan

Fitur haptic di pengontrol game Android adalah teknologi penting yang memberikan masukan taktil yang realistis selama gameplay.

Teknologi haptics memberikan sensasi fisik kepada pengguna melalui getaran atau gerakan. Misalnya, saat ledakan terjadi dalam game, pengontrol bergetar, yang memungkinkan pemain merasakan dampaknya secara realistis. Selain itu, getaran halus dapat disinkronkan dengan suara karakter berjalan atau dengan cepat, memberikan pengalaman yang lebih hidup. Jenis respons haptik ini memungkinkan pemain merasakan secara fisik berbagai acara yang terjadi dalam game.

Teknologi ini memaksimalkan pengalaman bermain pemain, memperkuat respons emosional, dan memperkaya dinamika game. Setelan haptic di pengontrol game Android tidak hanya memperluas peluang kreatif bagi pengembang game tetapi juga memberikan pemain dengan pengalaman bermain game yang lebih realistis dari sebelumnya.

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

Untuk menggunakan getar, ini menyetel fitur dan izin.

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

Untuk mengetahui informasi selengkapnya tentang VibratorManager dan Manifes aplikasi.

Sensor gerakan

Salah satu teknologi paling inovatif yang meningkatkan pengalaman {i>game<i} adalah pengontrol game Android yang dilengkapi sensor gerakan. Teknologi ini tepat mendeteksi pergerakan fisik pengguna dan menerjemahkan data itu menjadi tindakan di dalam game, sehingga memberikan pengalaman bermain game yang lebih intuitif dan imersif. Dalam pengantar ini, kita akan mengeksplorasi bagaimana fitur sensor gerak pada Pengontrol game Android berfungsi.

Sensor gerakan biasanya menggabungkan giroskop dan akselerometer untuk mendeteksi pergerakan dan orientasi pengguna.

Perlu mengimplementasikan class pemroses akselerasi dan giroskop serta mendaftarkan pemroses ini dengan pengelola sensor pengontrol.

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

Untuk mengetahui informasi selengkapnya tentang Sensor gerakan dan SensorEventListener

Lampu

Setelan warna cahaya di pengontrol {i>game<i} Android menambahkan dimensi baru pengalaman gameplay melalui elemen visual.

Fitur warna cahaya menggunakan lampu LED bawaan di {i>controller<i} untuk menampilkan berbagai warna, yang merespons berbagai skenario game secara dinamis. Misalnya, lampu mungkin berkedip merah saat kesehatan pemain kritis atau menyala hijau setelah menyelesaikan misi tertentu, memberikan masukan visual berdasarkan acara dalam game. Pengaturan warna terang ini memperdalam keterlibatan pengguna, meningkatkan ketegangan dan keseruan game, serta membantu pemain menikmati game sepenuhnya ke dunia game.

Fitur warna terang di pengontrol game Android melayani lebih dari hanya untuk tujuan dekoratif—hal ini memainkan peran penting dalam mengatur suasana {i>game<i} dan meningkatkan pengalaman pengguna.

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

Untuk menggunakan getar, ini menyetel fitur dan izin.

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

Untuk mengetahui informasi selengkapnya tentang LightsManager dan Manifes aplikasi.

Touchpad pengontrol

Beberapa pengontrol game menyertakan touchpad yang dapat digunakan untuk berbagai tindakan dalam game, seperti menavigasi menu atau mengontrol karakter game dalam dengan cara yang lebih intuitif.

Touchpad pada pengontrol game.
Gambar 1. Touchpad pada pengontrol game.

Pengontrol game dengan touchpad terintegrasi menawarkan kontrol perangkat langsung ke Android. Menyentuh touchpad akan menghasilkan kursor mouse di layar, yang memungkinkan untuk navigasi intuitif seperti {i>mouse<i}.