敵キャラクターにアニメーション処理を施します。基本的には、プレイヤーキャラクターと一緒で、アイドル、ジョグ、ランの三つのアニメーションをブレンドスペースで融合、C++アニムインスタンスクラスを作成して必要なコードを追加した後でアニムインスタンスブループリントを作成、アニムグラフでステートマシンを設定して完成です。
ブレンドスペース1Dの作成
Murdockのアニメーションフォルダに新たにブレンドスペース1Dを作成します。
アイドル、ジョグ、ランの三つのアニメーションをアセットから選択して、左にアイドル、中央にジョグ、右にランをそれぞれ配置します。
Axis Settingsの水平線のNameをSpeedに、Maximumを400に設定します。
C++アニムインスタンスクラスの作成
AnimInstanceを親クラスに敵のC++アニムインスタンスクラスを新たに作成します。
MurdockAnimInstance.hに関数と変数を宣言します。
public: UFUNCTION(BlueprintCallable) void UpdateAnimationProperties(float DeltaTime); private: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true")) float Speed; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) class AEnemy* Enemy;
MurdockAnimInstance.cppにコードを追加します。
#include "Enemy.h" void UMurdochAnimInstance::UpdateAnimationProperties(float DeltaTime) { if (Enemy == nullptr) { Enemy = Cast<AEnemy>(TryGetPawnOwner()); } if (Enemy) { FVector Velocity{ Enemy->GetVelocity() }; Velocity.Z = 0.f; Speed = Velocity.Size(); } }
アニムインスタンスブループリントの作成
Enemiesフォルダ内で右クリック、アニメーションBPを選択します。
親クラスにMurdockAnimInstanceを、ターゲットスケルトンにはMurdockを選択します。
MurdockAnimBlueprintを開き、AnimGraphエディタにブレンドスペースを追加します。
イベントグラフでUpdate Animation Propertiesノードを呼び出します。
イベントBlueprint Update Animationノードと呼び出したノードの実行ピンを接続します。
Delta Time XをDelta Timeに接続してコンパイル、保存ボタンを押します。
Enemy_BPのAnim Class検索窓にMurdockAnimBlueprintと入力して出てきた候補を選択します。
敵キャラは、ただ単に地上をスライドするのではなく、パトロールポイントへ走って行くようになります。パトロールポイントに関しては、ワールド内で敵キャラを選択した状態でないと表示されないので、ポイントを動かしたい時は、敵キャラを選択してハイライトさせた状態にしておく必要があります。
コメント