【UE4】アニメーションモンタージュによる連続攻撃

2019年3月3日

アニメーションモンタージュで複数のアニメーションを一つとして扱い、アニメーションの通知を駆使する事でコンボ、連続攻撃が実装できるようなので試してみました。

 

※画像はクリックで拡大できます

 

スポンサーリンク

アニメーションモンタージュの作成

 

コンテンツプラウザで右クリック、「アニメーション」→「アニメーションモンタージュ」を選択する事で作成できます。

アニメーションモンタージュを選択

 

アニメーションモンタージュにアニメーションを追加する

 

作成したアニメーションモンタージュを開くと、プレビュー画面に加えて「モンタージュ」とか「セクション」とか「通知」とかあるのが確認できます。

アニメーションモンタージュ編集画面

 

「モンタージュ」の部分に右側のアセットプラウザから「攻撃1」、「攻撃2」のアニメーションを追加します。

モンタージュにアニメーション追加

 

モンタージュセクションの追加

 

追加した「攻撃1」、「攻撃2」アニメーションのちょっと上側にある部分を右クリックして「新規モンタージュセクション」を選択します。

追加したモンタージュセクションは「攻撃2」の開始位置へセットする事で、ブループリントの制御でアニメーションをこの位置にジャンプさせる事ができます。

「SectionAttack2」モンタージュセクションの追加

 

アニメーション通知を追加する

 

編集部分をスライドして下の方に、「通知」項目があるので右クリック→「通知を追加」→「新規通知」を選択してアニメーション通知を追加します。

アニメーション通知を追加

 

追加した通知の「詳細」を確認し、「Montage Tick Type」を「Branching Point」に変更します。こうする事で通知タイミングがアニメーションに完全に同期されるようです。「Queued」と比較すると、一度に多くの通知を動作させた場合処理不可がかかるようです。

追加した通知の詳細

 

今回は三つの通知を追加しました。

・NormalAttackEnable

攻撃1の途中で通知され、攻撃2を可能にするフラグを制御する通知です。

・NormalAttackBranch

攻撃1の終了を通知します。攻撃2を行うかの分岐点です。

・NormalAttackEnd

攻撃2の終了を通知します。これで通常攻撃は終了です。

 

アニメーション通知のブループリント呼び出し

 

アニメーションモンタージュに追加した通知は、アニメーションBPで呼び出す事ができます。

今回は「攻撃1」、「攻撃2」の一例ですが、Characterクラスのブループリントで攻撃ボタンが押されたらプレイヤーが攻撃状態になるという処理から、アニメーションBPへ処理を繋げています。

Characterクラスで「イベントディスパッチャー」のNormalAttackDispatcherを作成し、攻撃ボタンを押したら呼び出します。

Characterクラスの攻撃ボタン押したときの処理

 

続いて、アニメーションBPのイベントグラフでアニメーション通知を受けた際の制御を記述します。

Characterクラスのブループリントで作成したイベントディスパッチャー、NormalAttackDispatcherにカスタムイベントのNormalAttackEventをバインドする事で、Characterクラス側の攻撃ボタンを押したときの処理と連動してアニメーションの処理を行うようにします。

アニメーションBP側でバインド

バインドの処理は一回で良いので、初期化処理で行ってます。

アニメーションBPでのアニメーションモンタージュに関する処理が下記画像のように行ってみました。

アニメーションBPでのモンタージュ制御と通知の呼び出し

 

アニメーションモンタージュに追加した通知が、「AnimNotify_~~~」で呼び出されているのが確認できると思います。

アニメーションモンタージュの再生は「Montage Play」、攻撃2の初に置いたセクションへのジャンプは「Montage Jump to Section」、アニメーションモンタージュの終了は「Montage Stop」で行っています。

マルチゲートで攻撃ボタン入力があった際に攻撃1、攻撃2とそれぞれ振り分けて、攻撃終了時にはマルチゲートをリセットするように注意しています。

 

スロットアニメーションによる再生

 

アニメーションモンタージュはスロットアニメーションによって再生します。

アニメーションBPのアニムグラフで、右クリック→検索に「Slot」と打ち込めばアニメーションモンタージュ内で定義されていたモンタージュグループ名で候補に挙がって来ると思うので、スロットを最終アニメーションポーズに繋げば完了です。

アニメーションBPのアニムグラフ

 

アニメーションステートとは独立して構成できるので、様々な用途が広がりますなぁ。

 

動作確認

 

攻撃!!

 

アニメーションモンタージュの再生、セクションへのジャンプ、アニメーション通知、いずれも大丈夫そうです!

スポンサーリンク