Game pause 中にカメラの移動操作をしたい

ゲームを停止させた状態でカメラを自由に動かし、スクリーンショットの撮影が出来る
いわゆるフォトモードを作成しています。

しかし Set Game Paused ノードでゲームを一時停止させた状態では、アクターのlocationを操作する命令全般が機能せず、カメラを動かす手段が見つかりません。

Game Pause 中でも特定のアクターの移動を許可したり、強制的に移動させたり出来る機能はありますでしょうか。

よろしくおねがいします。

Hi! Maybe you could use NVIDIA Ansel, instead of programming it yourself:

いくつかの方法で可能だとは思うのですが、
まず、Tick でアクターの Location を制御する方法ですと、bTickEvenWhenPaused が true であれば Pause 中に Tick が動作するようになります。

“Class Defaults” もしくは BP/C++ から有効にすることが可能です。

image



入力ノードから制御する場合は、Input ノードの Execute when Paused が有効であれば Pause 中に動作するようになります。





また、Pause 中かどうかは以下のノード / コードで取得可能ですのでこちらで判定して独自のフローで動作させることも可能かと思われます。

image

UWorld* world = GetWorld();
world->IsPaused();

Thank you for your response. Can this be operated with a controller pad?

回答ありがとうございました。

I don’t know if it supports controls other than mouse

Thanks for the answer. I’ll give it a try.

TickでPAUSE中にAddActorWorldOffsetを与え続けてアクターを移動させることができました。
しかし追従したカメラの視点(Set View Target でプレイヤーから乗り換えたゲーム視点)まではその場から動かず、PAUSEを解くとアクター位置にとびます。
視点まで動かすのは難しいのでしょうか。

カメラの座標は LevelTick.cpp の中で “PlayerController->UpdateCameraManager” が呼ばれて更新されています。




Pause 中こちらの処理が止まってしまいますが、PlayerController の “Class Default” から “Should Perform Full Tick when Paused” を有効にすることで止まらずに実行可能です。





もしくは他のアクターの Tick 処理内で UpdateCameraManager を呼ぶことでも可能かと思われます。

ありがとうございました! 解決しました

1 Like