あっぷあっぷブログ

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

【UE5】Set Input Mode Game And UI で遭遇した問題

FirstPersonテンプレートでの確認

BP_FirstPersonCharacter内のBeginPlayでSet Input Mode Game And UIノードを使用します。これで、ゲーム起動後すぐに Input Mode が変更されます。

Set Input Mode Game And UIで発生する問題

MouseCaptureModeが変更される

Set Input Mode Game And UIノードを使用後、以下のようなログが表示されます。

CaptureDuringMouseDownというものに変更されている?

CaptureDuringMouseDownはマウスクリック中にのみマウスの動きを認識してくれるようです。 試してみると、BP_FirstPersonCharacterの視点移動はマウスクリック中しかできなくなりました。

MouseCaptureModeを変更する

Set Input Mode Game And UIノードの直後にSet Viewport Mouse Capture Modeノードを使用して、常に、マウスキャプチャーされるようにしてみました。
BP_FirstPersonCharacterの視点移動はマウスクリックをせずとも可能になりました。

ShowMouseCursorをオンにしてた場合は?

以下の記事でも触れていますが、ShowMouseCursorをOnにした状態だと、マウスによる視点移動入力はマウスクリック中にしか反応しませんでした。 make-study.hatenablog.com

UIにフォーカス時、InputActionが発動しない?

UIにフォーカスされている場合、InputActionを受け付けない問題に遭遇しました。
Widgetをクリックしたり、Set Input Mode Game And UIIn Widget to FocusWidgetを設定することでUIにフォーカスさせることができますが、この状態だとInputActionが発動しないようです。

UIへのフォーカスを外す

Set Focus to Game Viewportノードを使用することでUIへのフォーカスを外すことが可能です。 これにより、InputActionが呼ばれるようになりました。

最初にビューポート画面を一度クリックしないといけない問題

※ゲーム起動後すぐにSet Input Mode Game And UIを使用していた場合のお話です。
ゲームをビューポート上でプレイする場合、最初にマウスをビューポート画面でクリックしないとマウスやキーボードの入力を受け取ってくれません。スタンドアローンでプレイする場合は、最初にクリックしないといけないという問題は起きません。なのであまり気にしなくていいのかもしれません。

ちなみにSet Input Mode Game Onlyを使っている場合、この問題は起きません。

どうしても気になる場合

Set Input Mode Game And UIノードのIn Widget to Focusを指定したり、Set Focus to Game Viewportノードを使用したりすることで、画面を一度クリックしなきゃいけない問題は防げたりします。