あらゆるエクスペリエンスには、プレイヤーが環境と対話し、視覚を楽しむためのユーザー入力が必要です。Robloxは、マウス/キーボード、タッチ、ゲームパッド、およびVRを含むほぼすべての形式の入力をサポートしています。
クロスプラットフォーム入力
Robloxは本質的にクロスプラットフォームであり、プレイヤーは電話やタブレットでエクスペリエンスを発見して参加し、後でPCやコンソールでその続きから再開することができます。入力は、クロスプラットフォームの開発計画の一部として特に重要です。
このプロセスを簡素化するために、Robloxは、アクション(例: "ジャンプ"、"スプリント"、"発射")を定義し、これらのアクションを動かすための複数のハードウェア入力に対するバインディングを設定するための入力アクションシステムを提供しています。これにより、すべての技術的な側面を考えることから解放され、どの入力がどのアクションを実行するかを単に定義できるようになります。

入力タイプの検出
クロスプラットフォーム開発では、プレイヤーが使用している主な入力タイプを特定し、それに応じて応答することが重要です。通常、これは、デバイス全体でUI 要素(例: 画面上のボタンやメニュー)が優雅に機能することを保証するためです。
たとえば、タッチ対応デバイスは、タッチがデフォルトの入力であり、アクションに対してタッチボタンが表示される可能性があると仮定しますが、プレイヤーが追加のBluetoothキーボード/マウスまたはゲームパッドを接続した場合、主な入力タイプをそれに切り替えたいと考え、画面上のUIのためのバックアップ入力としてタッチを使用したいと考えることができます。読み取り専用のUserInputService.PreferredInputプロパティは、予想されるプレイヤーの行動に基づいて、複数のデバイスタイプ間で複数の入力タイプをテストし、適応する便利な方法です。
PreferredInputの値は、内蔵デバイス入力とプレイヤーの接続されたゲームパッドまたはキーボード/マウスとの最近のインタラクションに基づいて変化します。例は次のとおりです:
| 現実のシナリオ | PreferredInput |
|---|---|
| プレイヤーは他の入力デバイスが接続されていない電話を使用している; 入力タイプの変更の可能性はない。 | Touch |
| プレイヤーはBluetoothキーボードとマウスが接続されたモバイルデバイスを使用しているが、ゲームパッドは接続されていない。 | KeyboardAndMouse |
| プレイヤーはBluetoothゲームパッドが接続されたタブレットを使用しているが、キーボードやマウスは接続されていない。 | Gamepad |
| プレイヤーはBluetoothキーボードとマウスが接続されたXboxまたはPlayStationを使用しており、最近はキーボードまたはマウスとインタラクションを行った。 | KeyboardAndMouse |
| プレイヤーはゲームパッドが接続されたWindowsまたはMac PCを使用しており、最近はゲームパッドとインタラクションを行った。 | Gamepad |
以下のLocalScriptは、優先入力を初期検出し、ゲームプレイ中の変更に応じるためのテンプレートです。
PreferredInputの検出
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- プレイヤーは他の入力タイプが利用可能/接続されていないタッチ対応デバイスを使用しています
print("Touch")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- プレイヤーがゲームパッドを接続したか、最近ゲームパッドとインタラクションしました
print("Gamepad")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- プレイヤーがキーボードまたはマウスを接続したか、最近キーボードまたはマウスとインタラクションしました
print("KeyboardAndMouse")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)
デフォルトのバインディング
Robloxは、移動、カメラ操作、および基本的な環境との相互作用のためのデフォルトの入力バインディングを提供します — Robloxプレイヤーはこれらの操作に慣れていますので、特定のケースでのみそれらをオーバーライドする必要があります。また、予約済みの入力はオーバーライドすることができず、常にその意図された目的で機能します。
| アクション | マウス/キーボード | ゲームパッド | タッチ |
|---|---|---|---|
| Robloxメニューを開く | Esc | Startボタン (ButtonStart) | 該当なし |
| デベロッパーコンソール | F9 | 該当なし | 該当なし |
| 全画面モード (Windows) デスクトップ表示 (Mac) | F11 | 該当なし | 該当なし |
| ビデオを録画 (Windows) | F12 | 該当なし | 該当なし |
| スクリーンショットを撮る | PrintScreen | 該当なし | 該当なし |