ゲームプログラマー暇人日記

プロのゲームプログラマーが技術的な事から、そうじゃないことまで書いていきたいと思います。

UE4でアニメーションを行う

敵に弾を当てた時に、敵が倒れるアニメーションを再生するという処理を作ったので、

その時の作業解説です。

出来上がるのはコレ。

 

  1. FirstPersonで新規プロジェクト作成。
    今回はUE 4.9.2を利用しています。

    f:id:hima_zinn:20151108210305p:plain

  2. Infinity Blade: Adversariesを作成したプロジェクトに追加

    f:id:hima_zinn:20151108210708p:plain

  3. Blueprintフォルダ作成

    f:id:hima_zinn:20151108210753p:plain

  4. アニメーションBPを追加

    f:id:hima_zinn:20151108210847p:plain

  5. 親クラスAnimInstance、ターゲットスケルトンBear_Export_Skeleton選択
    名前はAnimBlueprint_Bearにしました。

    f:id:hima_zinn:20151108211049p:plain

     

  6. AnimBlueprint_Bearを開いて、Resultを引っ張ってAdd New State Machine...を選択
    名前はState Machine Bearにしました。
    f:id:hima_zinn:20151108211412p:plain

  7. State Machine Bearを開き、Entryを引っ張って、ステートを追加を選択
    名前はIdleにしました。

    f:id:hima_zinn:20151108211725p:plain

  8. Idleを開き、アセットブラウザのExoGame_Bears_IdleをIdle(ステート)内にドラッグアンドドロップf:id:hima_zinn:20151108211925p:plain

     

  9. Resultと繋いで、コンパイル
    ここでクマが待機モーションで動いていたら想定通り。

    f:id:hima_zinn:20151108212036p:plain

  10. 倒れるアニメーションを入れる前に、レベル上に待機モーションのクマを出します。

    ブループリントクラスを追加
    親クラスはCharacter
    名前はBlueprint_Bearにしました

    f:id:hima_zinn:20151108212211p:plain

  11. Blueprint_Bearを開き、MeshのスケルタルメッシュにEnemy_Bearを設定

    f:id:hima_zinn:20151108212602p:plain


  12. AnimationにAnimBlueprint_Bearを設定
    設定後、コンパイルするとIdleモーションが再生されていればOK

    f:id:hima_zinn:20151108212718p:plain

  13. ヨー値に270度を入れておく

    f:id:hima_zinn:20151108212857p:plain

  14. トランスフォームのロケーションZを-80.0に設定

    f:id:hima_zinn:20151108213021p:plain

  15. CapsuleComponentのシェイプの高さとカプセル半径を80.0に設定
    本当は球にした方が良いけど、今回はカプセルのまま使ってます。

    f:id:hima_zinn:20151108213258p:plain

  16. レベル上にBlueprint_Bearをドラッグアンドドロップし、向きを修正する

    f:id:hima_zinn:20151108213404p:plain

  17. プレイするとIdleモーションを繰り返すクマが表示される

    f:id:hima_zinn:20151108213458p:plain

  18. AnimBlueprint_BearのState Machine Bearを開き、Death_2ステートを追加する

    f:id:hima_zinn:20151108213650p:plain

     

  19. Death_2ステートを開き、ExoGame_Bears_Attack_Death_2とResultをつなげる
    設定のLoop Animationのチェックを外す
    このチェックが付いていると、クマが死亡するアニメーションが繰り返し表示されます。

    f:id:hima_zinn:20151108213847p:plain

     

  20. IdleからDeath_2のルールをダブルクリック。
    文言はUE4が間違ってる。

    f:id:hima_zinn:20151108214041p:plain

  21. マイブループリントで変数を追加

    f:id:hima_zinn:20151108214133p:plain

  22. Integer型のLifeにして、コンパイルする

    f:id:hima_zinn:20151108214236p:plain

  23. Lifeをドラッグアンドドロップし、ゲットを選択

    f:id:hima_zinn:20151108214340p:plain

  24. 0以下と比べるようにしてつなげる
    ここでコンパイルするとクマが死ぬアニメーションが再生される

    f:id:hima_zinn:20151108214431p:plain

  25. Lifeのデフォルト値を1に変更する

    f:id:hima_zinn:20151108214545p:plain

  26. Blueprint_Bearを開き、Integer型の変数Lifeを追加してコンパイルし、デフォルト値を1にする

    f:id:hima_zinn:20151108214730p:plain

  27. CapsuleComponentを右クリックし、イベントを追加、OnComponentBeginOverlapを選択

    f:id:hima_zinn:20151108214907p:plain

  28.  ボールがあたった時にライフが0になるように設定する

    f:id:hima_zinn:20151108215501p:plain

  29. FirstPersonBPのBlueprintにあるFirstPersonProjetctileを開く

    f:id:hima_zinn:20151108215111p:plain

  30. Sphere Collisionを追加

    f:id:hima_zinn:20151108215207p:plain

  31. シェイプのサイズを適当な値に設定
    今回は22にしました。

    f:id:hima_zinn:20151108215314p:plain

  32. AnimBlueprintのイベントグラフを開く

    f:id:hima_zinn:20151108215624p:plain

  33. Try Get Pawn OwnerのRetuen Valueを引っ張り、Cast To Blueprint_Bearを選択

    f:id:hima_zinn:20151108215744p:plain

  34. As Blueprint_Bearから引っ張り、GetLifeを選択

    f:id:hima_zinn:20151108215856p:plain

  35. マイブループリントの変数Lifeをドラッグアンドドロップし、セットを選択

    f:id:hima_zinn:20151108215956p:plain

  36. 図のように各ノードをつなぐ

    f:id:hima_zinn:20151108220041p:plain

  37. プレイ
    うまくいっていれば、弾があたった時にクマが倒れてくれるハズ!

    f:id:hima_zinn:20151108220200p:plain

    f:id:hima_zinn:20151108220217p:plain

 

UE4の解説ってキャプチャが多くなって大変。。。
今回はOnComponentBeginOverlapを使って当たり判定を取りましたが、本当はApplyDamageとEvent Any Damageを使ったほうが良いです。