入力イベント (Input Events)
Udon Input Events を使用することで、プラットフォームを問わずプレイヤーのコントローラー入力を統一された方法で取得できます。これらのイベントは、プレイヤーが操作設定(リマップ)を変更した場合でも正しく機能します。
現在、Button と Axis の2種類のイベントがあり、それぞれ boolean 型と float 型の値が含まれます。また、各イベントは特別な UdonInputEventArgs オブジェクトを保持しています。なお、Unity の入力メソッドやプロパティを使用して入力データを直接読み取ることも可能です。
ボタンイベント
ボタンイベントには bool 値が含まれており、ボタンが押されたときは true、離されたときは false となります。
InputJump
デスクトップではスペースキー、コントローラーでは通常フェイスボタンが割り当てられています。
InputUse
デスクトップでは左クリック、コントローラーでは通常トリガーボタンが割り当てられています。
InputGrab
デスクトップでは左クリック、VRコントローラーでは通常グリップボタンが割り当てられています。
InputDrop
デスクトップでは右クリックが割り当てられています。Vive Wandsや一部のWindows Mixed Realityコントローラーではグリップボタンを押すことで、その他のコントローラーではグリップボタンを離すことで実行されます。
軸イベント(Axis Events)
軸イベントは、通常 -1 から 1 の範囲の値をとる float 型の値を持っています。アナログスティックを備えたコントローラーを使用する場合、0 から 0.1、次に 0.2 といった具合に、値が変化するたびに新しいイベントがトリガーされます。デスクトップユーザーの場合、出力される値は -1、0、1 といった整数になります。
InputMoveHorizontal
デスクトップでは A キーと D キー、コントローラーでは通常、左スティック/パッドの左右移動に対応します。
InputMoveVertical
デスクトップでは W キーと S キー、コントローラーでは通常、左スティック/パッドの上下移動に対応します。
InputLookVertical
デスクトップではマウスの上下移動、ゲームパッドおよびVRコントローラーでは通常、右スティックの上下移動に対応します。
InputLookHorizontal
デスクトップではマウスの左右移動、VRコントローラーではComfort Turning(快適な視点回転)が無効な場合の右スティック/パッドでの左右回転、ゲームパッドコントローラーでは通常、右スティックの左右移動に対応します。
UdonInputEventArgs
このオブジェクトはすべての入力イベントに含まれており、イベントに関する有用な追加データを保持しています。将来的にこのオブジェクトへさらにデータを追加する可能性があります。ここで参照できると便利なデータがあればお知らせください。現時点では、以下のデータが含まれています。
- UdonInputEventType:
BUTTONまたはAXIS - boolValue: ボタンイベントの場合は
True/False。軸イベントの場合はfalse(デフォルト値) - floatValue: 軸イベントの場合は -1 から 1 の数値。ボタンイベントの場合は
0(デフォルト値) - handType:
LEFTまたはRIGHT。キーボードやマウスのユーザーにも含まれます(マウスはRIGHT、キーボードはLEFTとなります)。
OnInputMethodChanged
このイベントは、ユーザーがキーボードからマウス、コントローラー、タッチスクリーンといった入力方法を切り替えるたびに発生します。このイベントはパラメーターとして VRCInputMethod 列挙型を含みます。
VRCInputMethod.Viveは、SteamVR経由で動作するViveコントローラーです。VRCInputMethod.ViveXrは、OpenXR経由で動作するVive XR Eliteコントローラーです。
Unityの入力メソッドとプロパティ
Udonでは、UnityEngine.Input 名前空間の一部メソッドやプロパティにアクセスできます。これらを使用することで、ユーザー入力に関する詳細な情報を取得可能です。
Udonで利用可能なメソッドとプロパティは以下の通りです。
Input.anyKey,Input.anyKeyDownInput.inputStringInput.imeIsSelectedInput.GetAxis(),Input.GetAxisRaw()Input.GetButton(),Input.GetButtonDown(),Input.GetButtonUp()Input.GetMouseButton(),Input.GetMouseButtonDown(),Input.GetMouseButtonUp()Input.GetJoystickNames()Input.GetKey(),Input.GetKeyUp(),Input.GetKeyDown()
VRChatメニューにおける入力検知
以下のいずれかのVRChatメニューが開いている間、Udonで入力を検知することはできません。
- メインメニュー
- クイックメニュー(デスクトップまたはモバイルのみ)
- テキスト入力ポップアップ
VRChatメニューを開くと、入力を押し続けていたとしても、Udonはすべての押下入力を解放します。例:
- 矢印キーを押したままVRChatメニューを開くと、そのキーに対して
Input.GetButtonUp()はtrueを返します。 - ジャンプボタンを押したままVRChatメニューを開くと、Udonは
InputJump(false)を実行します。
VRChatメニューを閉じると、Udonは押されているすべての Unity 入力を押下状態にします。例:
- 右矢印キーを押したままVRChatメニューを閉じると、そのキーに対して
Input.GetButtonDown()はtrueを返します。 - ジャンプボタンを押したままVRChatメニューを閉じても、Udonは
InputJump(true)を実行しません。
最終更新: