Unreal Engine 4 (UE4) Advent Calendar 2017 の8日目です。
今回はアクションゲームで重要となるヒット演出について
・物理アニメーション
・カメラシェイク
・ヒットストップ
・ヒットエフェクト
・吹き飛ばし演出
この5つで紹介していきます
最後にサンプルプロジェクトを配布しているので
参考にどうぞ!
今回、紹介するのはこんな感じ
物理アニメーション
まずキャラクターにダメージモーションをセットしたいところですが
今回はダメージモーションがなしのため物理アニメーションを採用したいと思います
alweiさんのブログや公式が紹介していますが改めて紹介します
モーションが物理的なオブジェクトの影響を受けてそれにそった動きをします。
~alweiさんのブログより~
ここに関してはalweiさんのブログや動画を参考にしてもらえれば大丈夫です
付け加えて言うとpelvisではなくspine_2などを選ぶとその子ボーンのみ
アニメーションさせることができます
この実装でこんな感じ
カメラシェイク
UE4にカメラシェイク用のクラスが用意されており
こちらのブログで紹介されていますが改めて紹介します
UE4 カメラを振動させる(Camera Shake BP、Client Play Camera Shake) 凛(kagring)のUE4とUnityとQt勉強中ブログ
おなじみのブループリントクラスから
「CameraShake」クラスを選択し
こちらの詳細で設定したものを
ブループリントから呼び出します
おまけですが、なるさんがアクションゲームを参考に例をあげたものが
とても参考になるのでここに添付しておきます
ヒットストップとカメラ揺れを色々試してた pic.twitter.com/TmGrCFtt1w
— なる (@nal_ew) 2017年10月26日
カメラシェイクを入れると微妙ですがこんな感じに
(すいません、GIFだとわかりにくいですね)
ヒットストップ
これに関しては2つ方法があってベヨネッタのウィッチタイムのような敵だけがスローモーションになって自分は自由に動かせたい場合、こちらの
「Custom Time Dilation」を0~1の間で設定することで
遅くしたり一時停止させることができます
しかし、今回は全体的に遅くしたいのでこちらのブログの最初で紹介された
「Set Global Time Dilation」を使い、ヒットストップを実装していきます。
まずヒットストップというのは、ヒットしたときに何フレーム描画を停止するまたは遅くすることを言います。
ヒットストップを入れるとこんな感じに結構いい感じになります。
(Gif画像が分かりにくくてすいません)
↓参考までにどうぞ
ヒットストップについて
— Wazen (@Assault_Spy) 2016年4月8日
Hit stopは両アクターのCustom Time Dilationを一時的に0にすることで実装できます😋👍 ※動画は効果の有無を比較したもの。参考に。 #UE4 #UE4Study pic.twitter.com/ruwLMvY51S
吹き飛ばし演出
あとは下の画像のノードのように
ヒットしたときにライフカウントを計算して
Simulate Physicsをオンにしてあげれば吹っ飛ぶようになります
こんな感じに
あとはこれに当たった時のエフェクトやサウンドを適当に入れれば
良い感じのヒット演出ができます。
今回は敵のブループリントクラスだけで完結しています。
敵のブループリントはこのようになっています
今回、結構ブログやツイートの紹介に頼っている部分が多くて申し訳ありません
しかし、他の方がとてもよくまとめているのでそのまとめ記事として投稿しました
日々情報発信をしていただいている方には頭が上がりません、本当にありがとうございます
最後に今回紹介したことをまとめたプロジェクトファイルを下記で配布しています
もしよければダウンロードして参考にしてください。
SampleHitAction.zip - Google ドライブ
Unreal Engine 4 (UE4) Advent Calendar 2017 - Qiita
明日はまめおさん(まめお (@PaperSloth) | Twitter)の
「Unreal C++を書くにあたってやっておいた方がいいこと」です。
ありがとうございました。