雖然許多 ChromeOS 裝置都有觸控螢幕,但使用滑鼠、鍵盤和遊戲手把,通常能在大螢幕裝置上獲得最佳遊戲互動體驗。行動遊戲世界通常以觸控為主,因此需要思考如何為非觸控使用者提供最佳體驗。
首先,請參閱鍵盤、滑鼠和遊戲控制器支援的最佳做法。請特別注意使用者按住按鍵或可能按下多個按鍵的情況。
觸控式動作適用於配備觸控螢幕的 Chromebook,但為了提供優質體驗,請務必加入經過深思熟慮的實體控制項。舉例來說,滑鼠輸入非常適合調整視野或瞄準,但不應是執行動作的必要條件。如果行動遊戲提供螢幕上的選單,讓使用者能用拇指按下按鈕來使用火炬、劍或盾牌,要求他們用滑鼠點選這些按鈕就會造成不良體驗。而是應透過覆寫 onKeyUp 或 onKeyDown,指定鍵盤按鍵來觸發每個動作。詳情和程式碼請參閱輸入相容性頁面。
滑鼠擷取
第一人稱視角遊戲實作滑鼠擷取功能後,在電腦上呈現的效果最佳。這會隱藏滑鼠指標,讓使用者透過滑鼠移動視點、瞄準、轉向等。以下是基本的滑鼠擷取示範,會在使用者點選名為 text_clickme 的文字檢視區塊後,記錄指標位置和按鈕狀態。詳情請參閱 Android 指標擷取說明文件。
class MainActivity : AppCompatActivity() { var mouse_x: Float = 0f var mouse_y: Float = 0f var mouse_left_pressed = false var mouse_center_pressed = false var mouse_right_pressed = false var mouse_scrolling = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) text_clickme.setOnClickListener { text_clickme.requestPointerCapture() } text_clickme.setOnCapturedPointerListener { view, motionEvent -> // Get the coordinates required by your app mouse_x = motionEvent.x mouse_y = motionEvent.y when (motionEvent.action) { ACTION_DOWN -> { when (motionEvent.buttonState) { BUTTON_PRIMARY -> mouse_left_pressed = true BUTTON_SECONDARY -> mouse_right_pressed = true BUTTON_TERTIARY -> mouse_center_pressed = true } mouse_scrolling = false } ACTION_CANCEL, ACTION_UP -> { when (motionEvent.actionButton) { BUTTON_PRIMARY -> mouse_left_pressed = false BUTTON_SECONDARY -> mouse_right_pressed = false BUTTON_TERTIARY -> mouse_center_pressed = false 0 -> { mouse_left_pressed = false mouse_right_pressed = false mouse_center_pressed = false } } mouse_scrolling = false } ACTION_SCROLL -> { mouse_scrolling = true } else -> { mouse_scrolling = false } } // Indicate event was consumed true } } // Release pointer capture when escape pressed override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { if (keyCode == KEYCODE_ESCAPE) { text_clickme.releasePointerCapture() return true; } return super.onKeyUp(keyCode, event) } }
即時通訊
聊天功能是多人遊戲的重要組成部分。請花點時間思考使用者在玩遊戲時,會如何與遊戲的聊天功能互動。舉例來說,如果使用者以鍵盤玩遊戲,就不應需要使用滑鼠或觸控螢幕來存取即時通訊或傳送訊息。
其中一種模式是讓鍵盤按鍵聚焦於聊天室方塊,並處理 Enter 鍵來傳送訊息。
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when(keyCode) { KeyEvent.KEYCODE_C -> { edittext_chatbox.requestFocus() true } KeyEvent.KEYCODE_ENTER -> { submitChatMessage() true } else -> super.onKeyUp(keyCode, event) } }
請參閱 Android 輸入相容性頁面的鍵盤說明文件。
觸控筆支援
繪圖應用程式和滑動式遊戲可在 ChromeOS 裝置上使用觸控筆輸入功能。詳情請參閱「觸控筆輸入」頁面。
遊戲控制器
Chromebook 最多可支援四個遊戲控制器。開發人員應使用標準 Android 遊戲控制器 API 來支援這些控制器。
按鈕是對應至常用的值,同時使用常見的對應。但很遺憾地,並非所有遊戲控制器製造商都遵守相同的對應慣例。如果可以讓使用者選取不同的熱門控制器對應關係,即可提供更優質的體驗。