Roblox セッションの大部分がマウスとキーボードを使ってプレイされているため、広範囲のオーディエンス向けのエクスペリエンスを設計するときは、これらの入力を適切にサポートすることが重要です。マウスとキーボードの入力に慣れたら、モバイルとゲームパッドの入力を設定して、複数のプラットフォームでエクスペリエンスを互換性にします。
便宜上、Roblox は最も一般的なマウスとキーボードの入力を デフォルトバインディング として設定し、予約バインディングを除いて、オーバーライトできます。
一般的なマウス入力
すべてのデバイス入力と同様に、UserInputService を使用してマウス入力をキャプチャできます。このサービスは、1度に複数のデバイスの入力変更とデバイス入力状態を捕捉する拡張可能な方法を提供します。Roblox はまた、レガシーマウス入力検出を PlayerMouse および ClickDetectors でもサポートしています。
さらに、ContextActionService を使用して、コンテキストに応じて、1つの入力に複数のアクションを処理できます。たとえば、岩の近くでツールを使用したり、建築物の内部でドアを開けたりします。コンテキスト依存の入力 については、コンテキスト特定の入力アクションの設定情報を参照してください。
次の LocalScript 、StarterPlayerScripts に配置すると、マウスクリックをキャプチャし、マウスの位置を 出力 ウィンドウに印刷します:
ローカルスクリプト - 出力マウスクリックと位置
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- まず、「処理されたイベント」が真実かどうかをチェックします
-- これは、別のスクリプトが既に入力を処理したことを示し、このスクリプトは無視されます
if processedEvent then return end
-- 次に、入力がマウスイベントであるかどうかをチェックします
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
print("Left Mouse button was pressed:", inputObject.Position)
elseif inputObject.UserInputType == Enum.UserInputType.MouseButton2 then
print("Right Mouse button was pressed:", inputObject.Position)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
一般的なキーボード入力
キーボードイベントにアクセスするには、UserInputService.InputEnded イベントを使用して、キーストロークまたはその他の入力が終了するときを追跡します。マウス イベントと同様、このイベントは LocalScript 内でのみ機能します。
次の LocalScript 、StarterPlayerScripts に配置すると、押されたキーの Enum.KeyCode が 出力 ウィンドウに印刷されます:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- まず、「処理されたイベント」が真実かどうかをチェックします
-- これは、別のスクリプトが既に入力を処理したことを示し、このスクリプトは無視されます。
if processedEvent then return end
-- 次に、入力がキーボードイベントであるかどうかをチェックします
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
UI入力
マウスとキーボードの入力は、TextButtons や ImageButtons などの対話形式の UI 要素、およびフォームのフィールドのようにテキスト入力をキャプチャする TextBoxes とともに自動的に動作します。
ボタンとテキスト入力オブジェクトの作成に関する詳細は、ボタン と テキスト入力 を参照してください。
キャラクター移動モード
マウスとキーボードの移動制御スキームを Roblox の経験に設定できるように、StarterPlayer.DevComputerMovementMode の値をフォロー中のいずれかに変更できます:
オプション | 説明 |
---|---|
ユーザー選択 | ユーザーが経験メニューから希望の制御スキームを選択できるようにします。このオプションはデフォルトで有効になっています。 |
キーボードマウス | ユーザーは W A S D を押して移動し、Space でジャンプします。これは、 ユーザー選択 設定のキーボードとマウスユーザーのデフォルト設定です。 |
クリックして移動 | ユーザーはターゲットの場所を右クリックしてのみエクスペリエンスを移動できます。 |
スクリプト可能 | すべてのデフォルトコントロールを無効にし、独自のコントロールをバインドすることができます。 |
マウスアイコン
エクスペリエンス内のユーザーのマウスアイコンの外観と動作をカスタマイズして、UI要素全体にわたって一貫したスタイルを作成できます。これには、ボタンをホバーするなどの特定の状況でユーザーのマウスアイコンを一時的に変更することが含まれます。
アイコンを変更
ユーザーのマウスアイコンを変更するには、LocalScript で MouseIcon プロパティをカスタム Roblox アセットIDに設定して、UserInputService に変更できます。たとえば、次の LocalScript は、ユーザーのデフォルトのマウスアイコンを中央に青いドットが付いた円に変更します:
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
アイコンを非表示にする
ユーザーのマウスアイコンを非表示にするには、UserInputService.MouseIconEnabled を false に設定して、LocalScript に配置します。たとえば、次のコードはマウスアイコンを 2 秒ごとに見えるから見えないから切り替え、そして戻ります:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
アイコンをロック
マウスアイコンの位置を UserInputService.MouseBehavior で画面にロックし、Enum.MouseBehavior または LockCurrentPosition の LockCenter または Default 値で再度ロック解除できます。
ユーザーのマウスアイコンが位置にロックされている場合、UserInputService.InputChanged は、ユーザーがマウスを移動するときに依然として発動し、移動した距離をマウスが移動します。たとえば、次のコードサンプルでは、1秒後にユーザーのマウスアイコンがロックされ、Studio はユーザーがマウスを動かすたびにマウスデルタを印刷します:
local UserInputService = game:GetService("UserInputService")
task.wait(5)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
UserInputService.InputChanged:Connect(function(inputObject)
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
print("Mouse delta is (" .. tostring(inputObject.Delta.X) .. ", " .. tostring(inputObject.Delta.Y) .. ")")
end
end)
Roblox デフォルトバインディング
Roblox は、すべてのエクスペリエンスにデフォルトのキーバインドを提供します。移動、カメラコントロール、基本環境の相互作用に使用される最も一般的な入力です。予約されたバインドを除き、ContextActionService を使用して、コンテキストに依存する入力 で説明されたように、複数のバインドを単一のアクションに優先するクロスプラットフォームバインドを作成できます。
Enum.CoreGuiType 機能、例えば バックパック または チャット など、追加のデフォルト入力のリストがあります。Esc (Roblox メニュー) や F9 (開発者コンソール) のような予約済み入力を上書きすることはできません。
これらのバインディングは Roblox デフォルトですが、カスタムスクリプトでオーバーライドできます。ほとんどの Roblox ユーザーはこれらのコントロールに精通しているので、特定の場合にのみオーバーライドする必要があります。
入力 | 行動 |
---|---|
W ↑ | 前進する |
S ↓ | 戻る移動 |
A | 左に移動 |
D | 右に移動 |
Spacebar | ジャンプ |
← → | カメラを左または右に回転 |
右マウスボタン | 押すと、マウスをドラッグするとカメラビューが移動します |
マウススクロールホイール I O | カメラを拡大または縮小 |
Shift | EnableMouseLockOption が有効になっている場合、マウスロックを切り替える |