コトの発端
Unreal Engine 4.26を使用してVRコンテンツの開発を行っていた。
そしたら、下記の画像の通り「MotionController (R) Trigger」のようなMotionController入力を受け取るキーがなくなっていた。このままでは、OculusやVive、Valve IndexのようなVR HMDのコントローラの入力が受け取れない。。。
ただただ、トリガーが引かれたときのイベントを拾いたい。。。
どうやらアンリアルエンジン Ver.4.24から 「MotionController (R) Trigger」 は非推奨となったらしい。
MotionControllerのイベントが丸ごと消滅したみたいだね。代わりの方法で実装してみる。
環境
エンジン:Unreal Engine 4.26.2
検証したVR環境:Oculus Quest 2 (SteamVRで実行)
OS:Windows 10 Pro
VRコントローラのトリガー入力イベントを拾うまで
アクションシステムの設定
Unreal Engine 4.24以降では、コントローラの入力はすべてアクションシステムを経由する必要がある。
「編集」→「プロジェクト設定」を開く
左側のナビゲーションから「インプット」をクリックし、「バインディング」にある「アクションマッピング」右側の+マークをクリックする。下記の図では、右コントローラのトリガーを拾うアクションマッピングが登録されている状態なので、左コントローラの設定を行っていく。
左コントローラのトリガーを引いたときに発生するイベントの名前を設定する。ここでは、すでに登録している名前の規則に従い「MotionControllerTriggerL」とした。
次に登録した「MotionControllerTriggerL」を発生させるコントローラーと、そのボタンを追加していく。なるべく多くのコントローラーに対応させたいため、「トリガー」または「Trigger」で検索し、それらしいものを登録していく。
(私の環境では検索欄に日本語入力が受付られなかったので「トリガー」はコピペで入力した。)
入力したイベント名の右側の+マークをクリックして複数のコントローラーを登録する。
コントローラー入力イベントの受け取り
登録したアクションはPawnクラスのブループリントエディタのイベントグラフとかから呼び出せる。
アクションに登録されたキーが押された場合にPressedイベントが発生するから後は適当なノードにつないだらいいんじゃないかな。
いつもの
記事の正確性については無保証です。