1つのアニメーションBPを継承して各キャラ・各装備のアニメーションに対応する方法

アニメーションブループリントを一つ作成し、それを継承して各キャラクターの各装備分のアニメーションに対応させる。


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の切り替えを行うようにした。