UE5のヒットエフェクトについて
UE5で攻撃したら、敵がひるみ血が出るなどのヒットエフェクトがほとんどの場合必要になってくる。
これまでの以下のページをベースにヒットエフェクトを作っていこうと思う。
④視点変更
⑤弾を撃つ
⑦死亡処理
先に確認してみてほしい。
Get・SetやSequenceやBranchといった基礎的なノードがわからない場合は先に以下記事を確認してほしい。
アンリアルエンジンのノードの一覧UE5のヒットエフェクトの目次
ヒット時のひるみアニメーションの入手出血エフェクトを作成
ヒットエフェクトを実装
目次にもどる
ヒット時のひるみアニメーションの入手
攻撃がヒットすると敵がひるむようなアニメーションが必要になるので、Mixamoからとってくる。
以下からMixamoのサイトに入り、Animationタブを選択し、hitと検索すれば攻撃が命中した場合の様々なアニメーションが出てくる。
今回は自分は以下の2つのアニメーションをダウンロードしたが、好きなものを選べばOK。

MixamoConverterを使って好きなアニメーションを手に入れ、自分のプロジェクトにインポートしよう。
MixamoConverterの使い方がわからない場合は以下の記事で紹介しているので確認してほしい。
MixamoConverterの使い方アニメーションをインポートしたら、選択して右クリックし作成を選択してアニメーション
目次にもどる出血エフェクトを作成
Niagaraシステムを使って出血エフェクトを作成していく。
コンテンツドロワー直下にNiagaraフォルダを作成する。
Niagaraフォルダ内で右クリックし、FX→Niagaraシステムのように選択する。
.jpg)
Niagaraシステムのテンプレが表示される。今回はFountainを選択する。
.jpg)
Niagaraシステムが作成されるので、今回は名前をBloodにしてダブルクリックして開く。
.jpg)
エミッタ(プレビュータブで見える放出物)を動かす処理を変更して出血を表現していく。
.jpg)
「エミッタの更新」を選択し、詳細タブの以下の項目を変更する。
.jpg)
Loop Behaviorではエミッタ(プレビュータブで見える放出物)を動かす処理を何回行うかを設定できる。
Infiniteなら無限に何度も処理を行い、Onceなら1回だけ、Multipleなら回数を指定可能。今回は1回だけ血が出ればいいのでOnceを選択する。
Loop Durationでは1回の処理にかかる時間を指定できる。
出血エフェクトは短くていいので、今回は0.5に指定(0.5秒間、処理が行われる)。
SpawnRateでは出てくる放出物の数を指定できる
出血を表現するために放出物の数を増やしたい。今回は3000にした。
「Initialize Particle」を選択し、詳細タブの以下の項目を変更する。
.jpg)
Lifetime MinとLifetime Maxで放出物の寿命の最小と最大を指定できる。
今回はLifetime Minを1、Lifetime Maxを2とした。
Colorでは放出物の色を指定できる。
今回はRを0.1、Gを0、Bを0にして血の色を表現した。
.jpg)
Sprite Size Modeでは放出物一つ一つのサイズを指定できる。
今回はSprite Size ModeをRandom Uniform(ランダムなサイズ)にした。
Unuform Sprite Size Minは4、Unuform Sprite Size Maxは6に指定した。
「Shape Location」を選択し、詳細タブの以下の項目を変更する。
.jpg)
Shape Primitiveでは放出物が広がる形を選択することができる。
今回はBox/Planeを選択した。
「Add Velocity」を選択し、詳細タブの以下の項目を変更する。
.jpg)
Velocity Speedは放出物が動く速度を示す。速度が速いほど放出物が大きく動き、エミッタ全体のサイズも大きく見えるようになる。
デフォルトだと血が表示される範囲が広すぎると判断したので、Velocity SpeedのMinimumを250、Maximumを550に減少させた。
以上の作業で出血エフェクトは完成だ。

ヒットエフェクトを実装
以前の記事で作成したBP_Character(操作キャラや敵の親クラス)を開く。
HitAnim(Animモンタージュ)、HitAnim2(Animモンタージュ)、Hit(Boolean)、BloodLocation(Bone Name)の4つの変数を作成する。
.jpg)
以前インターフェースで作成したダメージ処理(HP-ATKなどを行った)に追加する形でヒットエフェクトを実装していく。
キャラが攻撃を喰らった時にひるむ処理は以下のようにした。
.jpg)
最初のBranch(Hitがfalseの時に処理)は攻撃が連続ヒット時に1回目のアニメーションモンタージュが中断されるのを防ぐために配置。その後にHitの変数をTrueにしている。
その後のBranchはRandom Integer in Rangeで1から2を指定し、1だった場合は上のPlay Montage、2だった場合は下のPlay Montageが再生されるようにしている。せっかく2つ敵が攻撃を喰らったアニメーションをとったので、どちらかがランダムで再生されるようにしたかったのでこのような処理にした。
敵(今回はBP_Orc)のブループリントでHitAnim(Animモンタージュ)、HitAnim2(Animモンタージュ)にあらかじめ再生するアニメーションを指定しておく。
上のPlayer MontageではHitAnim、下のPlayer MontageではHitAnim2が再生されるようにしている。
.jpg)
最後にPlayMontageのOn Completed(最後まで完了)とOn Interrupted(中断された)からワイヤーを伸ばし、Hitの変数にflaseをセットしてやればOKだ。
血がでるエフェクトについては、同じくダメージ処理に追加する形で以下のように実装してやればOKだ。
.jpg)
Spawn System AttachedノードははNiagaraシステムを指定した場所にスポーンさせることが可能だ。
System Templateには先ほど作成したNiagaraシステムのBloodを指定。
Attach to Componentにはダメージ処理を行ったキャラと同じメッシュを指定してやれば良い。
Attach Point NameにはNiagaraシステムをスポーンさせる位置を入力する。
今回は先ほど作った変数にBloodLocation(Bone Name)にあらかじめ、Niagaraシステムをスポーンさせたい骨の名前を入力しておく。
骨の名前は敵キャラのスケルタルメッシュを見て確認しよう。
.jpg)
今回は胸当たりにある骨であるspine_03から出血エフェクトを出すことにした。spine_03という骨の名前をコピーし、敵(今回はBP_Orc)のブループリントでBlood Locationの変数にあらかじめ入力しておく。
.jpg)
そしてBlood Locationの変数をGetした後、ワイヤーを伸ばしてBreak Bone Nameと検索してブレイクし、それをAttach Point Nameに入力するようにする。
.jpg)
以上でヒットエフェクト処理は完成。以下のように敵に攻撃を当てると敵がひるみ、胸当たりから出血する。