UE4でアニメーションを行う
敵に弾を当てた時に、敵が倒れるアニメーションを再生するという処理を作ったので、
その時の作業解説です。
出来上がるのはコレ。
#UE4 クマシューティング https://t.co/rzfAwBsH3z
— 暇人(ゲームプログラマー) (@hima_zinn) 2015, 11月 8
- FirstPersonで新規プロジェクト作成。
今回はUE 4.9.2を利用しています。
- Infinity Blade: Adversariesを作成したプロジェクトに追加
- Blueprintフォルダ作成
- アニメーションBPを追加
- 親クラスAnimInstance、ターゲットスケルトンBear_Export_Skeleton選択
名前はAnimBlueprint_Bearにしました。
- AnimBlueprint_Bearを開いて、Resultを引っ張ってAdd New State Machine...を選択
名前はState Machine Bearにしました。 - State Machine Bearを開き、Entryを引っ張って、ステートを追加を選択
名前はIdleにしました。
-
Idleを開き、アセットブラウザのExoGame_Bears_IdleをIdle(ステート)内にドラッグアンドドロップ
- Resultと繋いで、コンパイル
ここでクマが待機モーションで動いていたら想定通り。
- 倒れるアニメーションを入れる前に、レベル上に待機モーションのクマを出します。
ブループリントクラスを追加
親クラスはCharacter
名前はBlueprint_Bearにしました - Blueprint_Bearを開き、MeshのスケルタルメッシュにEnemy_Bearを設定
- AnimationにAnimBlueprint_Bearを設定
設定後、コンパイルするとIdleモーションが再生されていればOK
- ヨー値に270度を入れておく
- トランスフォームのロケーションZを-80.0に設定
- CapsuleComponentのシェイプの高さとカプセル半径を80.0に設定
本当は球にした方が良いけど、今回はカプセルのまま使ってます。
- レベル上にBlueprint_Bearをドラッグアンドドロップし、向きを修正する
- プレイするとIdleモーションを繰り返すクマが表示される
- AnimBlueprint_BearのState Machine Bearを開き、Death_2ステートを追加する
- Death_2ステートを開き、ExoGame_Bears_Attack_Death_2とResultをつなげる
設定のLoop Animationのチェックを外す
このチェックが付いていると、クマが死亡するアニメーションが繰り返し表示されます。
- IdleからDeath_2のルールをダブルクリック。
文言はUE4が間違ってる。
- マイブループリントで変数を追加
- Integer型のLifeにして、コンパイルする
- Lifeをドラッグアンドドロップし、ゲットを選択
- 0以下と比べるようにしてつなげる
ここでコンパイルするとクマが死ぬアニメーションが再生される
- Lifeのデフォルト値を1に変更する
- Blueprint_Bearを開き、Integer型の変数Lifeを追加してコンパイルし、デフォルト値を1にする
- CapsuleComponentを右クリックし、イベントを追加、OnComponentBeginOverlapを選択
-
ボールがあたった時にライフが0になるように設定する
- FirstPersonBPのBlueprintにあるFirstPersonProjetctileを開く
- Sphere Collisionを追加
- シェイプのサイズを適当な値に設定
今回は22にしました。
- AnimBlueprintのイベントグラフを開く
- Try Get Pawn OwnerのRetuen Valueを引っ張り、Cast To Blueprint_Bearを選択
- As Blueprint_Bearから引っ張り、GetLifeを選択
- マイブループリントの変数Lifeをドラッグアンドドロップし、セットを選択
- 図のように各ノードをつなぐ
- プレイ
うまくいっていれば、弾があたった時にクマが倒れてくれるハズ!
UE4の解説ってキャプチャが多くなって大変。。。
今回はOnComponentBeginOverlapを使って当たり判定を取りましたが、本当はApplyDamageとEvent Any Damageを使ったほうが良いです。