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 UI
でIn Widget to Focus
にWidgetを設定することで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
ノードを使用したりすることで、画面を一度クリックしなきゃいけない問題は防げたりします。