Roblox セッションの大部分は、マウスとキーボードのデバイスでプレイされますので、ワイドオーディエンスのためにエクスペリエンスを設計するときは、これらの入力を正しくサポートすることが重要です。マウスとキーボードの入力に慣れていると、モバイルとゲームパッドの両方の入力を設定することでエクスペリエ
Roblox は、デフォルトバインディングとして、最も一般的なマウスとキーボード入力を設定します。残りのバインディングはオーバーライドできます。
一般的なマウス入力
すべてのデバイスの入力と同様に、UserInputService を使用して、マウスの入力をキャプチャできます。このサービスは、 Class.PlayerMouse および Class.ClickDetector|ClickDetectors のデバイスの入力状況とインプット変更をスケールアビリティで監視します。Roblox は、
さらに、ContextActionService を使用して、コンテキストに応じて単一の入力で複数のアクションを処理できます。たとえば、ツールを使用して近くの岩に近づくか、建築物内でドアを開くなどです。コンテキストに対応する入力アクションを設定する方法については、コンテキストによる入力アクションの設定を参照して
次の 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 を 1>出力1> ウィンドウに印刷します:
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 、TextBoxes など、インタラクティブな UI エレメントと一緒に自動的に機能します。また、1> Class.Forms|Tables1> など、テキスト入力をフィールドに含めるような形式のフォームでも機能します
ボタンとテキスト入力オブジェクトの作成に関する詳細は、ボタン およびテキスト入力 を参照してください。
キャラクターの移動モード
Roblox エクスペリエンスのマウスとキーボードの移動コントロールのスキームを設定するには、StarterPlayer.DevComputerMovementMode の値をフォロー中のいずれかに変更できます:
オプション | 説明 |
---|---|
ユーザーチョイス | ユーザーがエクスペリエンスメニューから好きなコントロールスキームを選択できるようにします。このオプションはデフォルトで有効になっています。 |
キーボードマウス | ユーザーは WASD を押して移動し、 1>スペース1> をジャンプすることができます。これは、キーボードとマウスのユーザーのためのデフォルト設定です。 4>ユーザーチョイス4> の設定の場合、キーボードとマウスのユーザーのためのデフォルト |
クリックして移動 | ユーザーは、ターゲットの場所を右クリックすることでのみエクスペリエンスを移動できます。 |
スクリプト可能 | すべてのデフォルトコントロールを無効にし、自分のコントロールをバインドできるようにします。 |
マウスアイコン
ユーザーのマウスアイコンをエクスペリエンス内でカスタマイズして、すべてのユーザー UI 要素において一貫したスタイルを作成できます。これには、ボタンをホバーするなど、ユーザーのマウスアイコンを特定の状況で変更することが含まれます。
アイコンを変更する
ユーザーのマウスアイコンを変更するには、LocalScript プロパティを MouseIcon に設定して、Roblox アセット ID をカスタムに変更できます。たとえば、次の UserInputService は、ユーザーのデフォルト
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
アイコンを非表示にする
ユーザーのマウスアイコンを非表示にするには、 UserInputService.MouseIconEnabled を false に設定して、マウスアイコンを毎2秒ごとに表示から非表示に切り替えます。たとえば、次のコードは、マウスアイコンを表示から非表示に切り替え、毎2秒ごとに Class.LocalScript に設定します:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
アイコンをロックする
マウスアイコンの位置を画面にロックするには、UserInputService.MouseBehavior を使用して、Enum.MouseBehavior または LockCurrentPosition の値を持つ 1> Class.MouseBehavior|Default1> で、再びロックを解除します。
ユーザーのマウスアイコンが位置にロックされている場合、UserInputService.InputChanged は、ユーザーがマウスを動かすときに発動します。これにより、ユーザーがマウスを動かす距離がマウスが動く距離を上回ることがあります。たとえば、次のコードサンプルは、1秒後にユーザーのマウスアイコンをロックします、その
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 機能、例えば バックパック または チャット など、には、追加のデフォルト入力のリストがあります。 0>エスケープ0> (Roblox メニュー) や Enum.CoreGuiType3> (開発者コンソール) など、予約入力を上書きすることはで
これらのバインディングは Roblox のデフォルトですが、カスタムスクリプトで上書きできます。大多数の Roblox ユーザーはこれらのコントロールに熟慣しているので、特定の場合にのみ上書きする必要があります。
入力 | アクション |
---|---|
W ↑ | 前に移動 |
S 下へ | 戻る |
A | 左に移動 |
D | 右に移動 |
スペースバー | ジャンプ |
← → | カメラを左または右に回転 |
右マウスボタン | クリックすると、マウスをドラッグするとカメラビューが移動します |
マウススクロールホイール IO | カメラを拡大または縮小 |
シフト | Class.StarterPlayer.EnableMouseLockOption|EnableMouseLockOption が有効になっている場合、マウスロックを切り替えます |