2026年2月1日日曜日

【Unreal Engine_2】プレイモード中にマウスを使ってカメラを自由自在に動かす方法


先月の記事では、モデリングしたデータのレビューを想定したデータ構成例を考えました。そこで今回は、実際に他のメンバーとじっくり画面を見ながら検討することを想定し、改良を加えてみることにしました。

一番初めに実装したい機能としてはカメラを自由に動かして、モデリングしたデータを詳細にチェックすることが考えられます。そこで、今回はプレイモード中にマウスを使って視点となるカメラを動かし、様々な角度からデータを見ることができる方法をご紹介します。

マウスの操作方法としては、マウスホイールの回転がズーム、中ボタンのドラッグがPawnの移動、左もしくは右ボタンのドラッグがカメラのPitch回転とYaw回転、左のAltキーを押しながら左もしくは右ボタンのドラッグがカメラのRoll回転になるよう設定をしていきます。

Unreal Engine5のVersionは5.3.2です。


・前回のブログで完成した状態からスタートします。

・上の図はサブレベルとしてEnvironment_Cを追加した状態ですが、今回は無くてもokです。

・まずはProject Settings画面のEngine→Inputの項目の設定。

・今回のマウス操作はボタンクリック以外にマウスドラッグによるX方向、Y方向の移動量も取得するため、追加で設定が必要になります。

・Bindings → Axis Mappingsの項目内で+ボタンを押して二つ、空欄を追加し、片方にMouse X、もう片方にMouse Yをセットします。名前はわかりやすいものでOKです。


・続いてContent Browser内でContentフォルダ直下に新しくフォルダを作成し、4つのブループリントクラスを作成します。その際に指定する親クラスは、Game Mode Base、Pawn、Player Controller、Player Camera Managerの4つです。最後のPlayer Camera Managerのみ下部の空欄から検索して指定します。

・さきほど作成した4つのブループリントクラスのうち、BP_GameModeBaseをダブルクリックしてオープン。

・右側の欄のClasses欄のなかで、Player Controller Classに先ほど作っBP_PlayerController、Default Pawn ClassにBP_Pawnをセットします。これら二つを追加で適用しますよという宣言みたいなものです。

・終わったらコンパイル → 上書き保存します。

・続いてBP_PlayerControllerをダブルクリックしてオープン。

・右側のPlayer Controllerの欄の中で、Player Camera Manager ClassにBP_PlayerCameraManagerをセットします。この後で設定する、カメラの追加設定を適用しますよという宣言です。

・Mouse Interfaceの欄の中で、SHow Mouse CursorとEnable Click Eventsのチェックボックスに印を入れます。プレイモードでマウスカーソルの表示と、マウスクリックによるイベントの実行を可能にする設定です。

・終わったらコンパイル → 上書き保存します。

・続いてBP_PlayerCameraManagerをダブルクリックしてオープン。ここでは今回使用するカメラの回転角度の設定を行います。

・右側のPlayer Camera Managerの欄の中で、View Pitch MinとView Pitch Maxをそれぞれ-60.0、60.0をセットします。これは、カメラが際限なく動くと扱いずらいので、上下回転にそれぞれ制限を設ける設定です。数値はお好みでokです。

・さらに、View Roll MinとView Roll Maxはそれぞれ-60と60にセットします。こちらも数値はお好みでokです。

・終わったらコンパイル → 上書き保存します。

・続いてBP_Pawnをダブルクリックしてオープン。

・左側のComponents欄の中で、Addボタンをクリックし、DefaultSceneRootの下にSpringArm、さらにその下にCameraをセットします。今回使用するカメラのズームをスプリングアームで調整、回転角度と位置をPawnアクターで調整しますので、Pawnアクターにスプリングアームとカメラをぶら下げるイメージです。

・SpringArmを選択した状態で、右側のDetails欄の中で、Camera Collision → Do Collision Testを無効、Camera Settings → Use Pawn Control Rotationを有効にします。

・コンパイル→上書き保存します。

・いったんメイン画面に戻り、Contents BrowserにあるBP_PawnをViewport上にドラッグ&ドロップし、被写体の中心付近に置いてカメラウィンドウに被写体が収まるように回転させます。

・Details画面のAuto Possess PlayerをPlayer0に設定します。これをしておかないとプレイモード開始直後のカメラの位置がおかしくなります。

・BP_Pawn画面のSpringArmを選択した状態で、右側のDetails欄の中で、Camera → Target Arm Lengthをメイン画面のカメラウィンドウを見ながら調整します。これはプレイモード開始直後のズームになります。

・同じくSpringArmの下にあるCameraを選択し、Details欄のCamera Settings → Field Of Viewに数値をセットします。プレイモード中のパースを決める数値になりますのでお好みでセットします。

・そのままBP_PawnのEvent Graph画面に切り替え、ブループリントを組んでいきます。

・最初に変数を上の図のように設定します。ブーリアン型としてIs Moving、Is Orbitting_Pitch_Yaw、Is Orbitting_Roll、Click_A、Click_Bの計5つ、Float型としてMoveSpeedが1つです。名前はわかりやすいものでokです。

・ノードツリーの方ですが、マウスホイールの回転に応じてSpringArmのTarget Arm Lengthの値を増減し、カメラのズームイン、ズームアウトが機能します。マウスホイールの回転1ノッチごとに増減する数値を今回は100にしましたが、お好みで調整してください。

・ズーム量の上限、下限を設定するためにClampノードにつないでいます。こちらもお好みで調整可です。

・そのまま下の空いているエリアに上の図のようにブーリアン変数をセットします。

・マウスのボタンをドラッグ中に取得するX方向移動量とY方向移動量がPawnの移動とカメラの回転のどちらで使うか識別する必要があるので、ブーリアン型の変数を使って切り替えるようにします。中ボタンをドラッグして動かす状態がPawnの移動、右もしくは左ボタンをドラッグして動かす状態がカメラのPicth回転とYaw回転になるように、さらに左のAltキーを押した状態がRoll回転になるよう上の図のようにセットします。

・さらにその下の空いているエリアに、実際のカメラ回転動作の仕組みを上の図のように組んでいきます。

・冒頭で設定した、マウスのX方向移動量、Y方向移動量の入力に対し、ブーリアン型変数で切り分けることにより、カメラの回転がAdd Controller Pitch InputとAdd Controller Yaw InputとAdd Controller Roll Input、Pawnの移動がSet Actor Locationノードで実行するようにしています。

・Pawnの移動速度はMoveSpeed変数で指定するようにしています。初期値は0なので、必ずDatails画面で0より大きい値をセットしてください。

・終わったら忘れずにコンパイル → 上書き保存します。

・World Settings画面の中で、Game Mode → GameMode OverrideをBP_GameModeBaseにセットし、コンパイル → セーブします。

・以上で設定は完了です。プレイボタンを押すとマウスでカメラ視点を自由自在に動かすことができます。Roll回転のみ左のAltキーを押しながら動かします。

スタート直後に画面が真っ暗になる場合は以下の設定をします。

・Levels画面のサブレベル横に緑色の●がついているのはプレイモード開始後にブループリントを使って呼び出すレベル、ついてないものはプレイモード開始後に最初から常に読み込まれているレベルです。環境データが入っているサブレベルがすべて緑色の●になっているとプレイモード開始直後に読み込まれず真っ暗になります。よって、プレイモード開始直後に表示させたいサブレベルはレベル名の上で右クリック → Change Streaming Method → Always Loadedにセットして緑色の●を外してみてください。

・ちなみに表示/非表示の選択はプレイモード中は反映されませんので、表示させたくないサブレベルは緑色の●が付いた状態のままにしてください。


0 件のコメント:

コメントを投稿

【Unreal Engine_3】サブレベルをボタンで切り替える方法を実装してみました

前回に続き、Unreal Engineを使ったデザインレビューツールの改良を加えてみました。今回は、ボタンをクリックしてサブレベルを切り替える方法です。ボタンの下にテキストボックスを配置し、サブレベルの名前を表示する仕組みも取り入れてみました。