UE4 死亡時のエフェクトとかを考えてみる
最近、HITというゲームを始めました。
このゲームはUE4製らしいからという理由でインストールしたのですが、
サクサク動くし、グラフィックも綺麗でなかなか楽しんでます。
本題
今回は敵が消滅する際のエフェクトを作ります。
Destoy Actorでポンッって消えるのはちょっと寂しいですからね。
UE4のバージョンは4.13.2でやります。
準備
プロジェクトを作成します。
プロジェクト名は適当にTPSテンプレートで作成します。
Material Functionを作成する
今回のエフェクトはマテリアルを使って表現します。
また、様々な種類の敵のマテリアルに適応するため、
メインの処理はMaterial Functionで作成しましょう。
コンテンツフォルダ右クリック → Material & Textures → Material Function
名前はこんな感じにしました。
こんな感じに組みます。
ここでEmissive ColorとOpacityMaskに
それぞれOutputできるように作成します。
必要に応じてパラメータを追加してください。
Material Functionを適応させる
作成したMaterialFunctionを使用するマテリアルに適応させます。
今回はグレーマンにエフェクトをかけたいので、
グレーマンのマテリアルであるM_UE4Man_Bodyに
Material Functionを追加します。
グレーマンにはもう一つM_UE4Man_ChestLogoという
マテリアルがありますが、これについては後ほど。
M_UE4Man_Bodyを開いてください。
右クリックからMaterial Function Callを呼び出します。
このノードはMaterial Functionを呼び出すためのノードです。
このノードに先ほど作成した、MFunc_Dissolveを入れます。
これでMaterial Functionで出力したEmissive Colorと、
Opacity Maskが使えるようになります。
M_UE4Man_BodyマテリアルはUse Material Attributesに
チェックが入っているため、やや特殊な形をしていますが
チェックを外してこのようにしましょう。
これでこのマテリアルはMaterial Functionで作成した
パラメータなどが扱えるようになります。
Material Instanceにしておく
今回作成したパラメータなどはMeshのサイズや形に依存してしまうため、
Material Instanceを作成し、あらかじめ調整できるようにしておきましょう。
Instanceにしたいマテリアルを右クリック→
Create Material InstanceでMaterial Instanceが作成されます。
このようになります。
先ほど記述したM_UE4_Man_ChestLogoはすでに
Material Instanceのため、このまま使用します。
Material Instanceでパラメータの調整をする
作成したMaterial Instanceを開き、
Meshの形状に合うようにパラメータを変更します。
今回はこんな感じにしてみました。
M_UE4Man_Body_Inst
M_UE4Man_ChestLogo
パラメータを時間で変更させる
作成したMaterial FunctionにはTimeノードなどを使用した
時間で何かするという処理は入っていません。
ですので、別のところでパラメータを変更させる必要があります。
まずはThird Person Characterのブループリントを開きます。
変数を一つ追加します。
Dynamic Material Instanceでパラメータを変更させるためのものです。
戻り値はMaterial Instance Dynamicで配列化しておきます。
そして、Construction Scriptで処理をこのように書きます。
Meshで使用しているマテリアルをすべて
Dynamic Material Instanceとして作成し、変数に格納しています。
次にイベントグラフに処理を書きます。
カスタムイベントからタイムラインにつなげ、
時間によってパラメータを変更します。
タイムラインの処理が終了すると、
Destroy Actorに流れるようにしておきます。
タイムラインはこんな感じです。
エフェクトを発生させる
任意のタイミングで発生できるように
カスタムイベントを作成したので、
適当なタイミングで呼び出したいと思います。
今回はこの死亡アニメーションが終了して、
0.2秒後にエフェクトを発生させましょう。
まずは、このアニメーションを開き
アニメーションの終了時に通知を追加します。
次に、このアニメーションを組み込んだ
アニメーションブループリントを開きましょう。
先ほど作成した通知イベントから、このように処理を書き
エフェクト発生用のイベントを呼び出します。
これで処理は完成です。
再生してみる
今回はPキーを押すとアニメーションが流れるようにしました。
すこし、粗が見えますね。
パラメータの微調整が必要そうです。