はじめに
UEのシーケンサーを用いてゲーム開発を行う際に、特定条件でのフレームジャンプを行うことが必要になることがあります。
本記事ではシーケンサーでフレームジャンプを行う方法を記載します。
関数
MovieSceneSequencePlayerのSetPlaybackPositionを使用します。
※4.26以前ではPlayToFrameという関数がありましたが廃止されております。
こちらの関数にMovieSceneSequencePlaybackParamsを作成して、その値を渡すことでフレームジャンプが可能になります。
実装
MovieSceneSequencePlaybackParamsではFrame、Time、MarkedFrameのどれかで指定が可能ですが、今回はFrameを指定する形で実装を行います。
Frameの値はFrameTime内のFrameNumberを使用するため、実装するにはそれぞれの作成が必要になります。
FrameNumberのValueに値を渡せれば良いのでサンプルは以下のようになります。
FrameNumberを作成→FrameTimeを作成→MovieSceneSequencePlaybackParamsを作成→LevelSequenceActorのSequencePlayerのSetPlaybackPosition関数の引数に値を渡す
スキップ方法
スキップの方法として、間のイベントの値を実行するか、無視するかをUpdateMethodの値で設定が可能です。
基本的に実行したい場合はPlay、無視したい場合はJumpで設定
シーケンサー側に実装
作成した関数をシーケンサー側のイベントで呼び出す形で作成します。
画像はLevelSequenceActorを取得しているManagerを取得してスキップ関数を実行しています
(非効率ですが・・・)
実装したシーケンサーではパラメーターの値の位置へジャンプを行う形にできます。
また、本機能を用いることで、シーケンサー内で特定条件によるジャンプや、ボタン押下による特定位置へのスキップなどが可能になります。