Robloxセッションの大部分は、マウスとキーボードを利用してプレイされているため、幅広いオーディエンス向けにゲームを設計する際には、これらの入力をサポートすることが重要です。
マウス/キーボードを含むクロスプラットフォーム入力を簡素化するために、Robloxはアクションを定義するための入力アクションシステムを提供します。たとえば「ジャンプ」、「スプリント」、「発射」などのアクションに対して、複数のハードウェア入力のためにバインディングを設定します。
Robloxはまた、UserInputServiceイベントを通じて、一般的なマウス/キーボード入力をサポートしています。たとえば、InputBeganやInputEndedなどのイベント、特定のキーがキーボードで押されているかどうかを確認するためのIsKeyDown()のようなメソッドがあります。
入力タイプの検出
クロスプラットフォーム開発においては、プレイヤーが使用しているPreferredInputタイプを特定し、応答することが重要です。通常は、UI 要素、つまり画面上のボタンやメニューが、デバイス間で優雅に動作し、相互作用をサポートすることを確認します。
たとえば、PCやラップトップはマウス/キーボードがデフォルトの入力と見なしますが、プレイヤーがBluetoothゲームパッドを接続することを選択する場合があります。この場合、マウス/キーボードは有効な入力と見なされますが、接続されたゲームパッドを主要な入力タイプとして使用したいとプレイヤーが考えていると想定できます。
詳しくは入力タイプの検出を参照してください。
一般的なマウス/キーボード入力
入力アクションシステムを超えて、UserInputServiceを使用してマウスとキーボードの入力をキャプチャできます。以下のLocalScriptは、StarterPlayerScriptsに配置されると、キーとマウスクリックの開始と終了のフェーズをキャプチャし、出力ウィンドウに結果を印刷します。
LocalScript - キー/マウスの開始と終了を出力
local UserInputService = game:GetService("UserInputService")
local function onInputBegan(inputObject, processedEvent)
-- 他のスクリプトがすでに入力を処理している場合は戻る
if processedEvent then return end
print(inputObject.KeyCode.Name, "が開始されました!", inputObject.Position)
end
local function onInputEnded(inputObject, processedEvent)
-- 他のスクリプトがすでに入力を処理している場合は戻る
if processedEvent then return end
print(inputObject.KeyCode.Name, "が終了しました!", inputObject.Position)
end
UserInputService.InputBegan:Connect(onInputBegan)
UserInputService.InputEnded:Connect(onInputEnded)
マウスアイコン
ゲーム内でプレイヤーのマウスアイコンの外観と動作をカスタマイズすることで、すべてのUI要素にわたる一貫したスタイルを作成できます。これには、ボタンにマウスをホバーしたときなど、特定の状況でプレイヤーのマウスアイコンを一時的に変更することが含まれます。
LocalScript内でMouseIconプロパティをカスタムRobloxアセットIDに設定することで、プレイヤーのマウスアイコンを変更できます。たとえば、以下のLocalScriptでは、プレイヤーのデフォルトのマウスアイコンを中央に青い点のある円に変更します。
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"