アニメーションブループリントを一つ作成し、それを継承して各キャラクターの各装備分のアニメーションに対応させる。
1. ベースとなるアニメーションBPを作成
ステートの構成
AnimGrapのトップ階層にはStateMachineとモンタージュ用のSlotを配置する。
StateMachineは以下のように作成する。
跳躍以下のStartとEndのステートは「State Alias」である。
StartのStateAliasは自分自身のステートを含んでいるとエラーになるので、例えばLeapStartならLeap系のステートはチェックを外す。
EndのStateAliasは「Idle」のみを設定。
ステートの中身
ステートの中はSequencePlayer(またはBlendSpacePlayer」など)を置き、SequenceはDynamicにして変数化しておく。
再生速度も動的に変えたいアニメーションについてはPlayRateも同様にする。
ステートの遷移
Startからの遷移はフラグ変数を定義し、それがTrueになったら遷移するようにする。
Endへの遷移はアニメーションの再生が終わったら遷移するように「Automatic Rule Based on Sequence Player in State」にチェックを入れる。
またStartTransitionEventにイベントを定義し、アニメーションの再生が終わったらフラグをFlaseにするようにする。
アニメーション制御用変数の更新
MoveSpeedなどのアニメーション制御用の変数の更新処理を定義する。
ルートモーションの設定
ルートモーションを使用する場合は、「Class Defaults > Details > Root Motion」を「Root Motion from Everything」に設定しておく。
2. 子アニメーションBPを作成
作成した「ABP_Base」から子クラスを作成し、「ABP_Player_UnArmed」や「ABP_Player_Longsword」などの子アニメーションBPを作成する。
そしてClassSettingsから対応させたいキャラクターのスケルトンを設定する。
ClassDefaultsから各アニメーションを割り当てる。
3. キャラクターBPの編集
キャラクターBPの全体ベースクラスに、アニメーションBPのフラグを制御する関数を定義する。
ボーン毎のキャラクターBPのベースクラスに抜刀や納刀のタイミングでアニメーションBPの切り替え処理を定義する。
アニメーションBPの切り替え前後でポーズが大きく変わると服などの物理アセットが一瞬暴れるので、切り替え前後でポーズが変わらないようにアニメーションの遷移を工夫している。
納刀時はアニメーション遷移の工夫だけでは解決できなかったため、キャラクターBPの全体ベースクラスで納刀モーションを再生してから完了するまで待機してからアニメーションBPの切り替えを行うようにした。