入力イベント
Udonの入力イベントを使用することで、あらゆるプラットフォームでプレイヤーのコントローラー入力を統一された方法で読み取ることができます。これらのイベントは、プレイヤーが操作設定を変更した場合でも正しく動作します。
現在、ボタンと軸(Axis)という2種類のイベントがあり、それぞれブール値(bool)と浮動小数点値(float)が含まれています。各イベントは、特別な UdonInputEventArgs オブジェクトも保持しています。また、Unityの入力メソッドやプロパティを使用して、直接入力データを読み取ることも可能です。
ボタンイベント
ボタンイベントには bool 値が含まれており、ボタンが押されたときは true に、離されたときは false になります。
InputJump
デスクトップ環境ではスペースキー、コントローラーでは通常、フェイスボタンに対応します。
InputUse
デスクトップ環境では左クリック、コントローラーでは通常、トリガーボタンに対応します。
InputGrab
デスクトップ環境では左クリック、VRコントローラーでは通常、グリップボタンに対応します。
InputDrop
デスクトップ環境では右クリックに対応します。Vive Wandや一部のWindows Mixed Realityコントローラーではグリップボタンを押す動作、その他のコントローラーではグリップボタンを離す動作に対応します。
軸イベント
軸イベントには、通常 -1 から 1 の範囲をとる float 値が含まれます。アナログスティック付きのコントローラーを使用する場合、値が 0 から 0.1、0.2……と変化するたびに新しいイベントがトリガーされます。デスクトップユーザーの場合、出力される値は -1、0、1 といった整数になります。
InputMoveHorizontal
デスクトップでは A キーと D キー、コントローラーでは通常、左スティックやパッドの左右移動に該当します。
InputMoveVertical
デスクトップでは W キーと S キー、コントローラーでは通常、左スティックやパッドの上下移動に該当します。
InputLookVertical
デスクトップではマウスの上下移動、ゲームパッドや VR コントローラーでは通常、右スティックの上下移動に該当します。
InputLookHorizontal
デスクトップではマウスの左右移動、VR コントローラーでは(コンフォートターニング無効時の)右スティックやパッドでの左右旋回、ゲームパッドコントローラーでは通常、右スティックの左右移動に該当します。
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)を実行しません。
最終更新: