Pengontrol game dilengkapi fitur tambahan yang secara signifikan meningkatkan interaksi pemain dan imersif. Haptic, sensor gerakan, dan fungsi cahaya pengontrol game Android sangat berperan dalam memperdalam dan memperkaya pengalaman bermain game. Setiap fitur secara unik merangsang indra pemain, mendorong interaksi yang lebih bermakna dan intuitif di dalam game.
Sentuhan
Fitur haptic di pengontrol game Android adalah teknologi penting yang memberikan respons taktil yang realistis selama gameplay.
Teknologi haptics memberikan sensasi fisik kepada pengguna melalui getaran atau gerakan. Misalnya, saat ada ledakan di game, pengontrol akan bergetar, sehingga pemain dapat merasakan dampaknya secara realistis. Selain itu, getaran halus dapat disinkronkan dengan suara karakter berjalan atau berlari, menawarkan pengalaman yang lebih realistis. Respons haptik jenis ini memungkinkan pemain secara fisik merasakan berbagai peristiwa yang terjadi dalam game.
Teknologi ini memaksimalkan keseruan pemain, memperkuat respons emosional, dan memperkaya dinamika game. Setelan haptic di pengontrol game Android tidak hanya memperluas kemungkinan kreatif bagi developer game, tetapi juga memberi pemain pengalaman bermain yang lebih realistis daripada 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, fitur ini menetapkan 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 gameplay adalah pengontrol game Android yang dilengkapi sensor gerakan. Teknologi ini secara akurat mendeteksi gerakan fisik pengguna dan menerjemahkan data tersebut menjadi tindakan dalam game, sehingga memberikan pengalaman bermain game yang lebih intuitif dan imersif. Dalam pengantar ini, kita akan mempelajari cara kerja fitur sensor gerakan di pengontrol game Android.
Sensor gerakan biasanya menggabungkan giroskop dan akselerometer untuk mendeteksi gerakan dan orientasi pengguna.
Aplikasi perlu menerapkan 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 terang di pengontrol game Android menambahkan dimensi baru yang imersif ke gameplay melalui elemen visual.
Fitur warna lampu menggunakan lampu LED bawaan di pengontrol untuk menampilkan berbagai warna, yang secara dinamis merespons berbagai skenario game. Misalnya, lampu mungkin berkedip merah saat kesehatan pemain sangat penting, atau bersinar hijau setelah menyelesaikan misi tertentu, yang memberikan masukan visual berdasarkan peristiwa dalam game. Setelan warna terang ini memperdalam engagement pengguna, meningkatkan ketegangan dan kenikmatan game, serta membantu pemain menikmati dunia game secara lebih maksimal.
Fitur warna terang di pengontrol game Android tidak hanya untuk tujuan dekoratif, tetapi juga berperan penting dalam mengatur mood game 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, fitur ini menetapkan 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 membuka menu atau mengontrol karakter game dengan cara yang lebih intuitif.
![Touchpad di pengontrol game.](https://developer.android.google.cn/static/images/training/game-controller-touchpad.png?authuser=8&hl=id)
Pengontrol game dengan touchpad terintegrasi menawarkan kontrol perangkat langsung di Android. Menyentuh touchpad akan menghasilkan pointer mouse di layar, sehingga memungkinkan navigasi seperti mouse yang intuitif.