Chooserを使ってみましょう(・ω・)!
今回はChooserという動的にアセットを選択するものを活用して、
簡単にコンボ攻撃を作成してみようと思います。
実際に動かしたものはこちらの動画になります。
※UE5.8.1で作成しています。
バージョンごとに違うかもしれません。
※ThirdPersonTemplateプロジェクトを活用しています。
※書き間違え等あればコメントください!
実際に動作させたものはこちらになります。
Chooserとは?
ざっくりいうと設定したON・OFFやパラメータの範囲によって、
動的にアセット(クラスや構造体など)を選択する機能になります。
この機能により各種切り替えがより簡単かつ、
様々な切り替えを行えるようになっています。
他いろいろ活用法を調べたら各種Boolの状態を切り替えて、
マテリアルをリアルタイムで変更したりだとか、
モーションマッチングを変更して武器を持っている状態を、
変更したり切り替えてたりしているチュートリアルもありました。
今回私の方で紹介するのはChooserを活用して、
Floatの値の範囲でコンボの攻撃のアニメーションを切り替えて、
AnimNotifyを改良してコンボを継続かリセットする通知を作り、
攻撃アクションをするタイミングで、
Chooserのコンボ攻撃アニメーションを動作する仕組みです。
各種参考にさせていただいたリンクは下記になります。
◎参考リンク
※公式での活用方法の紹介
Unreal Engine の動的アセットの選択 | Unreal Engine 5.8 ドキュメンテーション | Epic Developer Community
※今回メインで参考にした動画
https://www.youtube.com/watch?v=G41RGiXLhnE&t=2s
※その他基本動作の紹介をしているブログ
【UE5】Chooserで始めるデータドリブン管理 – 株式会社ロジカルビート
プラグイン準備と入力・アニメーションの用意
実際にChooserプラグインの有効化と攻撃アクション用の、
インプットアクションを作成していきます。
まずはChooserプラグインをONにするために、
プラグインの画面から「cho」で検索してChooserをONにします。
続いてInputActionを追加します。
入力のインプットアクションを作成します
IA_ComboAttackというアクションを作りました。

作成したら入力マッピングコンテキストのMappingsに追加します。
マウスの左ボタンを適応します。
こちらで左クリックのアクションが追加できます。

続いてアニメーションを作成します。
今回活用するアニメーションはテンプレートで用意されている、
UnarmedのAttackフォルダに用意されている攻撃アニメーションを活用します。

各種アニメーションにEnableRootMotionをONにします。
こうすることで移動入力を入れてもその場でアニメーションします。
アセットアクション→プロパティマトリクスを選択して編集します。
すべての項目のEnable Root Motionにチェックを入れます。
ここまで出来たら後はアニメーションシーケンスを選択して、
作成する→AnimMontageを作成を選択して、
アニメーションモンタージュが出来上がれば完了です。

これでプラグイン準備と各種データの準備は完了したので、
各種動作を作成していきます。
コンボアクションの作成
それでは実際にコンボ動作を作成していこうと思います。
今回動作の核となるブループリントコンポーネントを作成します。
ブループリントクラスからアクターコンポーネントを選択します。
BPC_AttackComboというものを作成しています。
アクターコンポーネントで設定した変数をチューザーテーブルで、
活用するので変数を作成します。
・?CanAttack → 攻撃可能タイミングかどうか 初期値は☑あり
・?isAttack → 攻撃中かどうか 初期値は☑なし
・ComboCount → この数値でどの攻撃アニメーションをするか
・CanJump → 攻撃中のジャンプ管理をする

変数の準備ができたのでチューザーテーブルを作成します。
データ→チューザーテーブルを選択します。

チューザーテーブルを作成して各種設定をします。
・Chooser Type → Generic Chooserを選択
・Result Type → Object Of Tyoeを選択
・Resutl Class → AnimMontageを選択
◎パラメーター
・Parameters → Class Parameterを選択
・クラス → 作成したアクターコンポーネントを選択
・方向 → Inputを選択

これでチューザーテーブルで扱う設定は完了したので、
そのテーブルに設定する条件とデータを作成します。
まずは範囲設定を行います。
今回はFloatの値に応じてどの動作を行うのか決めているので、
こちらに合わせて列を追加から「Float Range」を選択します。

Float Rangeを追加したらFloat範囲下のドロップダウンから、
アクターコンポーネント側で作成した「ComboCount」を選択します。

あとは行を追加してAnimMontageとぞれぞれ値を設定します。

Floatの幅をそれぞれで設定します。
・1番目の攻撃:ComboCount → 0~0 AnimMontage1
・2番目の攻撃:ComboCount → 0.9 ~ 1.1 AnimMontage2
・3番目の攻撃:ComboCount → 1.9 ~ 2.1 AnimMontage3

これでチューザーテーブルの設定を行ったのでアクターコンポーネントに戻り、
各種処理を作成していきます。
攻撃行動のフラグ設定とChooserTableからアニメーションを動作させています。


また今回通知のタイミングでコンボのタイミングを取りますので、
それ用の関数として「AddComboCount」と「ClearCombo」の、
関数を作りそちらをカスタムした通知で呼ぶようにしています。

関数の処理は下記でAddComboCountではComboCountを加算して、
攻撃できるようにBool値を元に戻します。
ClearComboの場合はComboCountを0に戻して攻撃できるようにしています。
攻撃用のアクターコンポーネントの処理は以上になります。
続いて先ほど作成したAddComboなどを呼び出す用の、
AnimNotifyを親クラスとしたブループリントを作成します。
※コンボカウント加算用とコンボクリア用の動作を作成します。
作成したAnimNotifyの各種処理は下記になります。
◎AddComboCount
◎ClearCombo

その他必要な設定
これで各種動作処理の作成はすべて完了したので、
あと行う作業は下記になります。
1.AnimMontageに作成したカスタム通知を追加
2.キャラクターBPにアクターコンポーネントを追加する。
3.ジャンプ処理を攻撃中行えないようにする。
4.AnimBPのIKの処理順番を変更する。
まずは1番のAnimMontageにカスタム通知を追加します。
1番目と2番目の攻撃アニメーションには、
コンボカウント加算とコンボクリアの通知を追加し、
3番目のコンボを継続しない攻撃はコンボクリアのみ設定します。
・1番目のアニメーション

・2番目のアニメーション

・3番目のアニメーション

続いて2.のキャラクターBPにアクターコンポーネントを追加します。
BP_ThirdPersonCharacterを開き、
左上の追加ボタンを押してBPC_AttackComboを選択します。

続いてIA_JumpにCanJumpの状態をチェックする処理を追加します。
これは攻撃中にジャンプできないようにするためです。

最後に4.のAnimBPのIKの処理順番を変更します。
サードパーソンテンプレートのABP_Unarmedを開きます。
AnimGraphを開いてControlRigとSlotのDefaultSlotの順番を入れ替えます。
なぜこのようなことをするのかというとこの状態だと、
腰から足までのアニメーションがfootIKの、
CotnrolRigのほうが優先されてしまうためです。
AnimMontageはスロットごとで再生されるので順番を変更して、
FootIKの影響を受けないようにします。

これですべての設定が完了しました!
これでChooserTableを活用したアクションの作成は完了です。

最後に
ここまで見ていただきありがとうございました。
今回はAnimMontageの切り替えの紹介でしたが、
ほかにもChooserTableでのGamePlaytagの活用や、
モーションマッチングの切り替えなど、
活用幅がいっぱいありますのでいろいろ試してもらえたらうれしいです。
次回の記事もまた見ていただけると幸いです!














