roblox-input について
Roblox Input は、クライアント側のタッチ、ゲームパッド、キーボード、マウス、モーション入力を扱う開発スキルです。クロスプラットフォームのバインド、UI 状態に応じた入力制御、キャンセル動作、テストツールを解説します。
主な機能
- 01入力イベントの処理
- 02ContextActionService のバインドパターン
- 03PreferredInput による操作表示
- 04UI フォーカス時のゲーム入力制御
- 05長押し入力のキャンセル条件
- 06Device Simulator と Controller Emulator によるテスト
活用シーン
- 01クロスプラットフォーム操作の構築
- 02モバイル向けアクションボタンの追加
- 03メニューやテキスト入力中のゲーム操作の抑止
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-inputインストール後、Claude Code で/roblox-inputを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
Roblox Input
読み込むタイミング
タッチ、ゲームパッド、キーボード、マウス、モーション入力、画面上のアクションボタン、クロスプラットフォームのバインド。クライアント専用です。Server Authority のシミュレーション入力には Input Action System を使用します。
クイックリファレンス
- イベント:
InputBegan/Changed/Endedは(input, gameProcessedEvent)を返します。ゲームプレイ用にフィルタリングしてください。ホイールで発生するのはInputChangedのみです。 - バインド:
ContextActionService:BindAction(name, handler, touchButton, ...keys)を優先してください。stateで判定します(タッチの場合はKeyCode.Unknown)。バインドはスタック順になるため、BindActionAtPriorityを使用してください。Server Authority では、InputAction/InputContextとRunService:BindToSimulation()を使用します(Workspace.UseFixedSimulationが必要です)。 - モバイル優先、ハイブリッド対応:
TouchEnabledを一度だけ取得して使うのではなく、GetPropertyChangedSignalで監視したUserInputService.PreferredInput(Enum.PreferredInput)に応じてコントロールを表示します。 - タッチアクションボタン: ボタン上で始まったタッチに対してのみ発火します。カメラ操作のドラッグがボタン上を通過しても発火しません。
PlayerGui.TouchGuiのジャンプボタンの位置を測定して配置し、サムスティックの領域を空けてください。 - ゲームプレイを制御する: ゲームウィンドウが開いているとき、
TextBoxにフォーカスがあるとき、GuiService.MenuIsOpenが有効なとき、またはGuiService.SelectedObjectが設定されているときは、攻撃をブロックしてください。 - キャンセルはリリースではありません: ウィンドウを開いたとき、
Cancel、装備解除、フォーカス喪失、入力切り替え、パッド切断の際には、ホールド状態をキャンセルしてください。 - ゲームパッドツール: デフォルトのコントロールでは、
BindActivateを通じてButtonR2がバインドされます。Tool.ManualActivationOnly = trueにすると無効になります。ゲームパッドではGetMouseLocation()ではなく、画面中央から照準を合わせてください。 - ヒント:
GetStringForKeyCode(key, Enum.KeyCodeStringFormat.Abbreviated)、GetImageForKeyCode、またはInputActionLabelを使用してください。Xbox の名称をハードコードしないでください。 - テスト: Device Simulator と Controller Emulator を使用してください。メニューのフォーカスは
roblox-guiにあります。
コメント
Markdown 対応