マウスとキーボードの入力

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

Roblox セッションの大部分がマウスとキーボードを使ってプレイされているため、広範囲のオーディエンス向けのエクスペリエンスを設計するときは、これらの入力を適切にサポートすることが重要です。マウスとキーボードの入力に慣れたら、モバイルゲームパッドの入力を設定して、複数のプラットフォームでエクスペリエンスを互換性にします。

便宜上、Roblox は最も一般的なマウスとキーボードの入力を デフォルトバインディング として設定し、予約バインディングを除いて、オーバーライトできます。

一般的なマウス入力

すべてのデバイス入力と同様に、UserInputService を使用してマウス入力をキャプチャできます。このサービスは、1度に複数のデバイスの入力変更とデバイス入力状態を捕捉する拡張可能な方法を提供します。Roblox はまた、レガシーマウス入力検出を PlayerMouse および ClickDetectors でもサポートしています。

さらに、ContextActionService を使用して、コンテキストに応じて、1つの入力に複数のアクションを処理できます。たとえば、岩の近くでツールを使用したり、建築物の内部でドアを開けたりします。コンテキスト依存の入力 については、コンテキスト特定の入力アクションの設定情報を参照してください。

次の LocalScriptStarterPlayerScripts に配置すると、マウスクリックをキャプチャし、マウスの位置を 出力 ウィンドウに印刷します:

ローカルスクリプト - 出力マウスクリックと位置

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 内でのみ機能します。

次の LocalScriptStarterPlayerScripts に配置すると、押されたキーの 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入力

マウスとキーボードの入力は、TextButtonsImageButtons などの対話形式の UI 要素、およびフォームのフィールドのようにテキスト入力をキャプチャする TextBoxes とともに自動的に動作します。

ボタンとテキスト入力オブジェクトの作成に関する詳細は、ボタンテキスト入力 を参照してください。

キャラクター移動モード

マウスとキーボードの移動制御スキームを Roblox の経験に設定できるように、StarterPlayer.DevComputerMovementMode の値をフォロー中のいずれかに変更できます:

オプション説明
ユーザー選択 ユーザーが経験メニューから希望の制御スキームを選択できるようにします。このオプションはデフォルトで有効になっています。
キーボードマウス ユーザーは W A S D を押して移動し、Space でジャンプします。これは、 ユーザー選択 設定のキーボードとマウスユーザーのデフォルト設定です。
クリックして移動 ユーザーはターゲットの場所を右クリックしてのみエクスペリエンスを移動できます。
スクリプト可能 すべてのデフォルトコントロールを無効にし、独自のコントロールをバインドすることができます

マウスアイコン

エクスペリエンス内のユーザーのマウスアイコンの外観と動作をカスタマイズして、UI要素全体にわたって一貫したスタイルを作成できます。これには、ボタンをホバーするなどの特定の状況でユーザーのマウスアイコンを一時的に変更することが含まれます。

アイコンを変更

ユーザーのマウスアイコンを変更するには、LocalScriptMouseIcon プロパティをカスタム Roblox アセットIDに設定して、UserInputService に変更できます。たとえば、次の LocalScript は、ユーザーのデフォルトのマウスアイコンを中央に青いドットが付いた円に変更します:


local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIcon = "rbxassetid://3400146391"

アイコンを非表示にする

ユーザーのマウスアイコンを非表示にするには、UserInputService.MouseIconEnabledfalse に設定して、LocalScript に配置します。たとえば、次のコードはマウスアイコンを 2 秒ごとに見えるから見えないから切り替え、そして戻ります:


local UserInputService = game:GetService("UserInputService")
while true do
task.wait(2)
UserInputService.MouseIconEnabled = false
task.wait(2)
UserInputService.MouseIconEnabled = true
end

アイコンをロック

マウスアイコンの位置を UserInputService.MouseBehavior で画面にロックし、Enum.MouseBehavior または LockCurrentPositionLockCenter または 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カメラを拡大または縮小
ShiftEnableMouseLockOption が有効になっている場合、マウスロックを切り替える