あっぷあっぷブログ

UnrealEngine(ゲーム用途)関連の備忘録です。

【UE5】コントローラーでカーソル移動させたり、マウスクリックさせたい

実現したいこと

ゲームパッド等のコントローラー入力でもマウスカーソルを移動させたい。
その際に、Widgetのボタンもクリックできるようにしたい。ここでのマウスクリックは、UIボタンのクリックができることを意味します。

コントローラー入力によるマウスカーソルの移動

InputActionを用意

マウスカーソルを動かせるように、コントローラー入力用のInputActionを用意します。
InputActionは、スティック入力を受け取れるものにします。ファーストパーソンテンプレートのIA_Lookと同じような感じです。

コントローラー入力によるマウスクリック

今回行いたいことは、コントローラーでマウスカーソルを動かし、UIのボタンをクリックさせるというものです。

UINavigationプラグインの使用

[OLD] UI Navigation 2.0 in Code Plugins - UE Marketplace

こちらのプラグインを使用することで、コントローラー入力におけるUI上での決定ボタンを設定することができます。

※自分の環境では、古いバージョンのプラグインを使用しています。新しいバージョンが出ているので、そちらを使う方が良さそうです。

UI Navigation 3.0 in Code Plugins - UE Marketplace

ホバーイベントを用意

マウスカーソルの移動ができれば、Widgetにマウスカーソルが乗った時のホバーイベントを発火させることが可能になります。Buttonにホバーした際は、On HoveredOn Unhovered イベントでボタンがフォーカス中かどうかを知ることができます。

Set Focusを設定

ホバーのタイミングでSet Focusさせます。
コントローラーの決定ボタンを押すと、UINavigationプラグインの力で、ButtonのOn Clickedイベントを発火させること可能になります。

Set Focusの解除方法がわからなかったので、とりあえず親Widgetにフォーカスを当てるようにしました。

Set Focus中はキー入力で別ボタンへのフォーカスが可能になる

勝手にナビゲーションさせたくない場合は「停止」に設定できます。