概要
Unreal Engine 5では、マウスカーソルの表示状態を切り替えるために「Show Mouse Cursor」の状態を切り替えます。
しかし、インプットモード(Input Mode)が「Game And UI」となっているとき、マウスカーソルの表示状態を切り替えるためには「Show Mouse Cursor」の状態を切り替えるだけでは表示状態は変更できず、マウスカーソルを動かす必要があります。
(下の動画は、左上に「Hide MouseCursor」と出た瞬間に「Show Mouse Cursor」をオフにしており、マウスカーソルが消えた瞬間にマウスを動かしています。)
この記事では、下の動画のように、インプットモードが「Game And UI」のときに、マウスカーソルを動かさずに、マウスカーソルの表示状態を切り替える処理を、C++で実装します。
また、Blueprintで、現実のマウスを動かさずにマウスカーソルの表示状態を切り替える処理を実装します。
この記事の主な対象者
- Unreal EngineのC++初心者の方
- Blueprint(BP)の作り方の基礎を習得されている、初心者の方
マウスカーソルの表示を切り替える処理の実装(C++)
マウスカーソルを動かさずに、マウスカーソルの表示を切り替えるための処理を書くために、最初にプログラムの「[プロジェクト名].Build.cs」ファイルを開きます。
「[プロジェクト名].Build.cs」ファイルの中に、「PublicDependencyModuleNames.AddRange」と書かれているところがあるので、その項目の中に「"Slate"」を追加します。
次に、マウスカーソルの表示非表示を切り替える処理を書きたいC++ファイルを開き、下のような処理を書きます
// コントローラを取得する
TObjectPtr<APlayerController> playerController = UGameplayStatics::GetPlayerController(this, 0);
// マウスカーソルを非表示にする
PlayerController->SetShowMouseCursor(true);
FSlateApplication::Get().OnCursorSet();
(上の処理は、マウスカーソルを非表示にする処理です。マウスカーソルを表示する処理を書きたい場合は、「playerController->SetShowMouseCursor(true)」に変更してください。)
上の処理を書いたら、下の動画ようにマウスカーソルが動くことなく、マウスの表示状態を切り替えることができているかを確認します。
マウスカーソルの表示を切り替える処理の実装(Blueprint)
インプットモードが「Game And UI」となっているとき、Blueprintでは、マウスカーソルを動かさずにマウスカーソルの表示状態を切り替えることはできる方法は、申し訳ないのですが筆者はわかりません。
ですのでBlueprintでは、「Show Mouse Cursor」の状態を切り替えた後に、Blueprintの処理でマウスカーソルの座標を少しだけ動かすようにして、現実のマウスを動かす必要がないようにします。
「Show Mouse Cursor」の状態を切り替える処理のところに、下のようなノードを組みます。
上図のノードを組み終えたら、下の動画のように、現実のマウスを動かさずにカーソルの表示状態が切り替わっているか確認します。
(「Show Mouse Cursor」をオフにしたときに左上に「Hide MouseCursor」と表示するようにしており、「Hide MouseCursor」と表示された瞬間に少しだけマウスカーソルが動き、カーソルが消えています。)
以上で今回の記事の内容は終了です。
最後まで読んでいただき、ありがとうございました。