Tổng quan

Tay điều khiển trò chơi được trang bị thêm các tính năng bổ sung đáng kể nâng cao mức độ tương tác và mức độ nhập vai của người chơi. xúc giác, cảm biến chuyển động và ánh sáng các chức năng của bộ điều khiển trò chơi Android đặc biệt đóng vai trò quan trọng trong làm phong phú và sâu sắc trải nghiệm chơi trò chơi. Mỗi tính năng kích thích riêng giác quan của người chơi, thúc đẩy các tương tác có ý nghĩa và trực quan hơn trong trò chơi.

Xúc giác

Tính năng xúc giác trong tay điều khiển trò chơi Android là một công nghệ quan trọng cung cấp phản hồi xúc giác chân thực trong khi chơi.

Công nghệ xúc giác mang lại cảm giác vật lý cho người dùng thông qua rung hoặc chuyển động. Ví dụ: khi một vụ nổ xảy ra trong trò chơi, tay điều khiển rung, cho phép người chơi cảm nhận tác động một cách chân thực. Ngoài ra, các rung động nhẹ có thể được đồng bộ hóa với âm thanh của nhân vật đang đi bộ hoặc chạy, mang lại trải nghiệm giống như thật hơn. Loại phản hồi xúc giác này cho phép người chơi cảm nhận thực tế nhiều sự kiện khác nhau đang diễn ra trong trò chơi.

Công nghệ này giúp tối đa hoá trải nghiệm của người chơi, gia tăng phản ứng về mặt cảm xúc và làm phong phú thêm tính linh động của trò chơi. Chế độ cài đặt xúc giác trên tay điều khiển trò chơi Android không chỉ mở rộng khả năng sáng tạo cho các nhà phát triển trò chơi mà còn cung cấp với trải nghiệm chơi trò chơi chân thực hơn bao giờ hết.

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

Chế độ rung sẽ thiết lập một tính năng và quyền.

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

Để biết thêm thông tin về VibratorManagerTệp kê khai ứng dụng.

Cảm biến chuyển động

Một trong những công nghệ tiên tiến nhất giúp nâng cao trải nghiệm chơi trò chơi là tay điều khiển trò chơi Android được trang bị cảm biến chuyển động. Công nghệ này chính xác phát hiện chuyển động thể chất của người dùng và chuyển dữ liệu đó thành hành động trong trò chơi, mang đến trải nghiệm chơi trò chơi trực quan và sống động hơn. Trong phần giới thiệu này, chúng ta sẽ tìm hiểu cách tính năng cảm biến chuyển động trong Tay điều khiển trò chơi Android có thể hoạt động.

Cảm biến chuyển động thường kết hợp con quay hồi chuyển và gia tốc kế để phát hiện di chuyển và hướng của người dùng.

Thư viện này cần triển khai các lớp trình nghe tăng tốc và con quay hồi chuyển cũng như đăng ký các trình nghe này thông qua trình quản lý cảm biến của tay điều khiển.

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

Để biết thêm thông tin về Cảm biến chuyển độngSensorEventListener.

Đèn

Chế độ cài đặt màu sáng trên tay điều khiển trò chơi Android bổ sung một phương diện mới là đắm chìm vào trò chơi thông qua các yếu tố hình ảnh.

Tính năng màu ánh sáng sử dụng đèn LED tích hợp trong bộ điều khiển để hiển thị nhiều màu sắc để thích ứng linh hoạt với nhiều tình huống chơi trò chơi. Ví dụ: đèn có thể nhấp nháy màu đỏ khi sức khoẻ của người chơi đang ở mức rất nghiêm trọng hoặc toả sáng màu xanh lục khi hoàn thành một nhiệm vụ cụ thể, cung cấp phản hồi bằng hình ảnh dựa trên các sự kiện trong trò chơi. Các chế độ cài đặt màu sáng này giúp tăng cường mức độ tương tác của người dùng, làm tăng sự hồi hộp và hứng thú của trò chơi, đồng thời giúp người chơi chìm đắm hơn hoàn toàn vào thế giới trò chơi.

Các tính năng màu ánh sáng trong tay điều khiển trò chơi Android không chỉ là chỉ nhằm mục đích trang trí—nó đóng một vai trò quan trọng trong việc tạo nên tâm trạng của video trò chơi và cải thiện trải nghiệm người dùng.

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

Chế độ rung sẽ thiết lập một tính năng và quyền.

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

Để biết thêm thông tin về LightsManagerTệp kê khai ứng dụng.

Bàn di chuột điều khiển

Một số tay điều khiển trò chơi có cả bàn di chuột có thể dùng cho nhiều loại các hành động trong trò chơi, chẳng hạn như thao tác trên trình đơn hoặc điều khiển các nhân vật trong trò chơi một cách trực quan hơn.

Bàn di chuột trên tay điều khiển trò chơi.
Hình 1. Bàn di chuột trên tay điều khiển trò chơi.

Tay điều khiển trò chơi có tích hợp bàn di chuột giúp điều khiển thiết bị trực tiếp trên Android. Thao tác chạm vào bàn di chuột sẽ tạo ra một con trỏ chuột trên màn hình, cho phép để thao tác trực quan bằng chuột.