Robloxは、XboxやPlayStationコントローラーなどのゲームパッドからの入力を受け入れます。ゲームパッドを含むクロスプラットフォーム入力を簡素化するために、RobloxはInput Action Systemを提供し、「ジャンプ」、「スプリント」、「射撃」などのアクションを定義し、これらのアクションを駆動するために複数のハードウェア入力のバインディングを設定します。
ゲームパッド入力をバインドする際は、一般的なコントロールスキーマを参照して、プレイヤーに一貫したゲームパッド体験を提供してください。入力が設定されたら、サポートされているコントローラーでハプティックフィードバックを含めることで、プレイヤーの体験を向上させることができます。
ゲームパッドのサポートを構築する際は、接続されたゲームパッドまたはStudioのコントローラーエミュレーターを使用して頻繁にテストすることを忘れないでください。
入力タイプの検出
クロスプラットフォーム開発では、プレイヤーが使用しているPreferredInputタイプを特定し、応答することが重要です。通常、これはUI 要素(画面上のボタンやメニューなど)が優雅に機能し、デバイス間での相互作用をサポートすることを保証するためです。
たとえば、コンソールはゲームパッドがデフォルトの入力であると仮定しますが、PCやラップトップのプレイヤーはBluetoothゲームパッドを接続することも選択できます。この場合、マウス/キーボードはそのプレイヤーにとって有効な入力のままですが、接続されたゲームパッドを主要な入力タイプとして切り替えたいと仮定できます。
詳細については入力タイプの検出を参照してください。
一般的なコントロールスキーマ
Input Action Systemの特定のコントロールバインディングを考慮する際は、異なるゲーム間での一貫性を確立することが最善です。以下の入力バインディングは、プレイヤーがゲームパッドコントロールにすぐに慣れ親しみ、快適に感じるのに役立ちます。
| 入力 | 一般的な使用例 |
|---|---|
| ButtonA | プレイヤーのプロンプトやGUI選択を受け入れます。代わりに、ジャンプなどの主要なアクションに使用されます。 |
| ButtonB | プレイヤーのプロンプトやGUI選択をキャンセルします。代わりに、回避、ロール、スプリントなどの二次アクションに使用されます。 |
| Thumbstick1 | 一般的にキャラクターの移動に関連付けられています。 |
| Thumbstick2 | 一般的にカメラの移動に関連付けられています。 |
| ButtonL2, ButtonR2 | 一般的に射撃などの主要なアクションに使用されます。 |
| ButtonL1, ButtonR1, ButtonX, ButtonY | リロード、ターゲティング、インベントリやミニマップへのアクセスなどの二次アクション。 |

ハプティックフィードバック
多くのゲームパッドコントローラーには、ハプティックフィードバックを提供するためのモーターが内蔵されています。振動や振動を追加することで、プレイヤーの体験を大幅に向上させ、視覚や音声を超えた微妙なフィードバックを提供できます。
Robloxは、PlayStationゲームパッド、Xboxゲームパッド、およびQuest Touchコントローラーのハプティクスをサポートしています。ハプティックフィードバックは、HapticEffectインスタンスを通じて管理され、Typeを特定の値(例:GameplayCollisionやUIClick)に設定できます。
HapticEffectが設定されたら、Play()メソッドを通じてそれを開始できます。例えば:
local Workspace = game:GetService("Workspace")
local effect = Instance.new("HapticEffect")
effect.Type = Enum.HapticEffectType.GameplayExplosion
effect.Parent = Workspace
-- ハプティック効果を再生
effect:Play()コントローラーエミュレーション
コントローラーエミュレーターを使用して、物理的なコントローラーを接続せずにStudioで直接ゲームパッド入力をテストします。エミュレートされたデバイスの画像が表示され、入力が到着するとそのコントロールが点灯します。これにより、UserInputServiceハンドラーとInput Action Systemバインディングが期待通りに反応することを確認できます。