裏 Unreal Engine 4 (UE4) Advent Calendar 2016の12月3日の記事です。
はじめに
シーケンサーを再生すると、カメラが乗っ取られて一瞬で切り替わってしまいます。
それをどうにかシームレスに再生する方法になります。
(シーケンサー再生後にSetViewTargetWithBlendとか実行してもカメラ取れなかった気がする。何か他に方法とかあったら教えてください)
プレイヤーの周りをぐるりと回るシーケンサー。
再生開始したタイミングでシーケンサーのカメラにカクッと切り替わる
SetViewTargetWithBlendを使用した補間
多分これが一番簡単だと思います。
現在のカメラ~シーケンサー用カメラへの補間(SetViewTargetWithBlend) → 終わったらシーケンサー再生
ただこの場合、補間待ちが入るのでボタンを押した瞬間からシーケンサーを再生できず、演出に一旦間が空いてしまいます。
親ノードを使用した補間
twitterでアドバイス貰ったのでやってみました。
@com04 シーケンサー用にレベル上にダミーActorを入れて、そこに最初のカメラを設置、レベルブループリント上でシーケンサーが始まる前にActorを注視点に移動、カメラをタイムラインで最初のカメラへヌルっと移動させるロジックを組めば良い感じになりそうな気がしないでもないです
— シンダ C91 一日目 西 ひ-09b (@deadfactory) 2016年11月14日
こちらはシーケンサー再生開始と同時に現在のカメラから補間します。力技です。
カメラ本体(CineCameraActor1)のTransformはシーケンサーに取られるので、親Actor(CameraRoot)を用意して
そっちを動かすことで補間用の位置オフセットを無理やり付けています。
- おまけ
更に、シーケンサーのカメラを原点基準に作成、SeamlessCameraRootにプレイヤーのTransformを突っ込んだりしていけば、
固定位置のカメラではなく移動したプレイヤーの周囲を回るカメラ等も作れます。
やってみました。
締め
明日の裏 Unreal Engine 4 (UE4) Advent Calendar 2016はalweiさんの「UE4のモバイルDLC&パッチ処理周りについて」です。