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

入力タイプの検出
クロスプラットフォームの開発では、プレイヤーが使用している主要な入力タイプを特定して応答することが重要です。これは通常、UI 要素(画面上のボタンやメニューなど)がデバイス間で優雅に機能することを保証するためです。
たとえば、タッチ対応デバイスではタッチがデフォルトの入力と見なされ、アクション用のタッチボタンが表示される場合がありますが、プレイヤーが追加のBluetoothキーボード/マウスまたはゲームパッドを接続すると、主要な入力タイプをそれに切り替え、画面上のUIのためにタッチをバックアップ入力として使用したいと考えると考えられます。読み取り専用のUserInputService.PreferredInputプロパティは、予想されるプレイヤーの行動に基づいて複数のデバイスタイプで複数の入力タイプに適応する便利な方法です。
PreferredInputの値は、組み込みデバイスの入力やプレイヤーが接続されたゲームパッドまたはキーボード/マウスとの最近のインタラクションに基づいて変化します。例は以下の通りです:
| 実世界のシナリオ | PreferredInput |
|---|---|
| プレイヤーは他の接続された入力デバイスがない電話を使用しており、入力タイプの変更はありません。 | Touch |
| プレイヤーはBluetoothキーボードとマウスが接続されたモバイルデバイスを使用していますが、ゲームパッドは接続されていません。 | KeyboardAndMouse |
| プレイヤーはBluetoothゲームパッドが接続されたタブレットを使用していますが、キーボードやマウスは接続されていません。 | Gamepad |
| プレイヤーはXboxまたはPlayStationでBluetoothキーボードとマウスが接続されており、最近キーボードまたはマウスとインタラクションを行いました。 | 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 | 該当なし | 該当なし |