目次
はじめに
モン〇ターハンターの新モンスター紹介や、エル〇ンリングの第二形態など、ゲームプレイ画面からカットシーンに切り替わる演出が多くあります。
今回はそんなカットシーンをシーケンサーで作成して任意のタイミングで再生されるようにしてみたいと思います。
解説
⓪レベルの用意
サードパーソンマップを若干改造したレベルを用意しました。
左下の廊下から部屋に入るとカットが再生されるようにするのが目標です。
①シーケンサーの作成
アイコンからレベルシーケンスを追加を押します。
Cut01_Sequencerという名前で作成しました。
シーケンサーを作成すると自動的にシーケンサーのウィンドウが出てきます。
またアウトライナーに自動で追加されていることも確認しましょう。
②シーケンサーの開きかた
シーケンサーを作成すると自動的に開きますが、ウィンドウを閉じてしまうと開き方が若干分かりづらいので先に説明いたします。
アウトライナーからレベルシーケンスアクターを選択します。
そして詳細からレベルシーケンスを開くを押します。
もしくは作成したときのアセットの位置へコンテンツブラウザから移動して
クリックするとそのシーケンサーが開きます。
③カットを作っていこう
1.フレームレートを指定する
まずフレームレートを指定します。
今回は60で作りことにしました。
2.カットの長さを指定する
次にカットの長さを指定します。
今回は10秒=600フレームに指定します。
赤いゲージを動かすことでも設定できますが大変なので、
歯車アイコンの終端に入力することでも指定できます。
3.撮影カメラを追加する
シーケンサーのカメラアイコンをクリックしてカメラを作成します。
すると、Cine Camera Actorが作成されてトラックに自動で割り当てられます。
4.カメラの設定について
Cine Camera Actorの詳細からカメラ画角や被写界深度などを調整することができます。
5.カメラに動きを付ける
まず、シーケンサーを開いて制御したいカメラアクターにあるCinemaCameraActorに選択~ というボタンを押します。
するとビューポートの左上にパイロット有効という文字が出てきます。
この状態で画面を操作するとCineCameraActorとトランスフォームの値が同期します。
壁からのぞき込むように、左から右へトラックする動きを作ります。
タイムバーが0になっていることを確認してトランスフォームにキーを打ちます。
次にシーケンサーから480フレームに移動して,
ビューポートを操作して8秒後のカメラの位置を調整しましょう。
位置が決まったら再びキーを打ちます。
シーケンサーの下にあるプレイボタンをおしてカメラが移動することを確認しましょう。
6.被写界深度を制御してみよう
シーケンサーから制御できるのはトランスフォームだけではありません。
所有しているコンポーネントのいくつかを制御することができます。
試しに、Cine Camera Actorが持つマニュアル焦点距離を変更してみましょう。
600フレームに移動します。
遠景に焦点が合うようにマニュアル焦点距離を変更します。
詳細からこのプロパティに対して~をクリックしましょう。
するとシーケンサーのトラックにマニュアル焦点距離が追加されてキーが打たれます。
もしくはCameraComponentからマニュアル焦点距離を追加することも可能です。
同じように480フレームに移動して
今度は手前の壁に焦点が合うように値を変更してキーを打ちます。
プレイしてみて、8秒かけて移動して焦点が2秒かけて遠景に合うの確認しましょう。
7.シーケンサカーブエディタの開き方
移動時間を変更したりイーズインアウトを無効化したい場合はシーケンサ カーブから編集するのが便利です。
処理したいトラックをクリックして指定します。
カーブエディタにアニメーション~ をクリックします。
するとシーケンサカーブエディタが開きます。
8.移動をリニア化する
カメラの移動をリニア(等速)にします。
デフォルトではこのようにキーにはイージング処理がされております。
まず、Transdormを選択して
範囲選択or Ctrl+Aでキーの全選択をします。
キーの上で右クリックからリニアを選択します。
すると滑らかだったカーブが直線的になり、イージングがなくなります。
9.時間を調整する
移動が長すぎたり短すぎる場合はキーの位置を変更しましょう。
時間を移動8秒から5秒にしてみます。
シーケンサカーブから480以降のキーを選択
時間軸のみ移動したいのでXのみにスナップを制限します。
300フレームまで移動させました。
プレイしてみて時間が早くなっていることを確認しましょう。
シーケンサーの長さを変更する場合は再び末端を設定しましょう。
10.キャラクターを制御してみる
カメラと同じノリでキャラクターも制御してみましょう。
アウトライナーから目的のキャラクターをトラックにドラッグアンドドロップします。
トラックからトランスフォームを追加して現在値にキーを打ちます。
11.アニメーションを適応する
このままだとAポーズのままなので待機モーションを登録したいと思います。
その前にCR_Mannequin_Bodyを削除します。
このコンポーネントはシーケンサー内で独自のアニメーションを作ることができるトラックです。
しかし今回はアニメーションをそのまま利用するので使いません。
そのため削除しました。
アニメーションを適応するためにトラックを作ります。
ここで気を付けるのは、スケルトンにあったアニメーションデータを選択することです。
アニメーションがスケルトンにあっていない場合はリターゲットを行う必要があります。リターゲットについての解説は以下の記事に書いておりますので、そちらも併せてご覧ください。
アニメーションの末端を選択して伸ばします。
これでこのシーケンスの間はIdleアニメーションがループ再生されるようになりました。
プレイしてみてアニメーションしているか確認してみましょう。
12.フェードを入れる
トラックからフェードトラックを追加します。
30フレームまでに明るくなり、
370フレームから徐々に暗くなるように設定します。
④カットを再生するトリガーブループリントの作成
カットが完成したら、カットの再生フラグを作っていきます。
アクタを配置から、TriggerBoxを選択してレベルに配置します。
再生する仕組みを作るので追加の右にあるブループリントクラスに変換するを押します。
名前をBP_SequencerTriggerとしました。
ブループリントを開きイベントを追加します。
CollisionComponentの物理判定がオーバーラップになっていることを確認しましょう。
変数TargetLevelSequenceActorを作りインスタンス編集可能にチェックを入れます。
オーバーラップイベントからプレイヤーが当たったかを検出して登録したカットを再生します。
絶対に当たるようにBoxExtentの範囲を設定して
TargetLevelSequenceActorを設定します。
⑤LevelSequenceActorの編集
レベルシーケンスアクタの詳細から以下のように変更を加えます。
これでプレイヤーキャラを再生中に非表示&操作できなくなります。
⑥完成!!
ゲームを実行してみましょう。
※ゲーム実行中にシーケンサーを開きっぱなしにするとコンストラクションスクリプトで正しい結果が得られないので必ずウィンドウを閉じましょう。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。