UE4 覚え書き アニメーションBPの作成・実行
下準備
コンテンツブラウザ内のスケルタルメッシュ(「SK_Mannequin」)を右クリック、メニューの中の「作成する」⇒「Anim ブループリント」を選択してキャラクターアニメーション用のBPを作成する。
アニメーションさせる対象の3Dモデルの設定。ここでは「Third Person Character」を流用して使用。
Animationタブ内の「Animation Mode」は「Use Animation Blueprint」のままでOK。
「Anim Class」は使用したいAnimブループリント(AnimBP)に変更する。
※Animブループリントを複数用意しておけば、ここを変更するだけでアニメーションパターンを変える事ができる。
一つ下のMeshタブでは使用するスケルタルメッシュの変更もできそう。(多分)
AnimBPの編集
AnimBPの「アニムグラフ」内に以下のノードを作成する。
- New State Machine
※Anim State Machineに名前を変更してます。
このNew State Machineノードの中でモーションの切り替え条件の設定、どのモーションを使用するかなど指定できる。 ダブルクリックして中に入ると「Entry▶」というノードがあるので、そこにモーションのノードを配置して接続していく。
モーション同士のつながりにはトランジションルールを設定する必要がある。上記の場合なら、キャラクターの移動速度が100を超えた場合、待機モーションから走りモーションへの移行するというルールになっている。
トランジションルールを更に開いて、その中で条件を設定。
キャラクターのスピード値が100を超えた場合、走りモーションを再生開始する。
ここでシレっと登場した「スピード値」は、また他のBPによって取得する必要がある。以下はキャラクターのスピード値と落下中(宙に浮いているか?)かの判定を取得し変数に代入するBPでイベントグラフ内に構築する。
- Try Get Pawn Owner
でキャラクターの状態を取得できるようにする。
- Cast To Character
この「Cast~」ノードでは正直具体的に何をしているのか不明ですが、キャラクターの情報を変数などで使用する際の宣言的なものなのかな?と勝手に想像してます。Unreal Engine | ブループリントでキャストする
- Get Velocity (キャラクターの情報からベクトルの移動幅を取得)
- VectorLengthSquared (ベクトル値をFloat型の移動幅(スピード値)に変換)
- Is Falling (キャラクターが宙に浮いているか判定。True、Falseを返す)
キャラクター制御に関しては結構ややこしい・・・これは実際に何か作ってみて体で覚えた方が良さそうだ。