UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 死亡時のエフェクトとかを考えてみる

最近、HITというゲームを始めました。

mobile.nexon.co.jp

 

このゲームはUE4製らしいからという理由でインストールしたのですが、

サクサク動くし、グラフィックも綺麗でなかなか楽しんでます。

 

本題

今回は敵が消滅する際のエフェクトを作ります。

Destoy Actorでポンッって消えるのはちょっと寂しいですからね。

 

UE4のバージョンは4.13.2でやります。

 

準備

プロジェクトを作成します。

f:id:MozPaca:20161206120603p:plain

 

プロジェクト名は適当にTPSテンプレートで作成します。

f:id:MozPaca:20161207144714p:plain

 

Material Functionを作成する

今回のエフェクトはマテリアルを使って表現します。

また、様々な種類の敵のマテリアルに適応するため、

メインの処理はMaterial Functionで作成しましょう。

 

コンテンツフォルダ右クリック → Material & Textures → Material Function

f:id:MozPaca:20161212124605p:plain

 

名前はこんな感じにしました。

f:id:MozPaca:20161212125037p:plain

 

こんな感じに組みます。

ここでEmissive ColorとOpacityMaskに

それぞれOutputできるように作成します。

f:id:MozPaca:20161212131819p:plain

必要に応じてパラメータを追加してください。

 

Material Functionを適応させる

作成したMaterialFunctionを使用するマテリアルに適応させます。

今回はグレーマンにエフェクトをかけたいので、

レーマンのマテリアルであるM_UE4Man_Bodyに

Material Functionを追加します。

f:id:MozPaca:20161212132326p:plain

 

レーマンにはもう一つM_UE4Man_ChestLogoという

マテリアルがありますが、これについては後ほど。

f:id:MozPaca:20161212132524p:plain

 

M_UE4Man_Bodyを開いてください。

f:id:MozPaca:20161212132845p:plain

 

右クリックからMaterial Function Callを呼び出します。

このノードはMaterial Functionを呼び出すためのノードです。

f:id:MozPaca:20161212133149p:plain

 

このノードに先ほど作成した、MFunc_Dissolveを入れます。

これでMaterial Functionで出力したEmissive Colorと、

Opacity Maskが使えるようになります。

f:id:MozPaca:20161212133249p:plain

 

M_UE4Man_BodyマテリアルはUse Material Attributesに

チェックが入っているため、やや特殊な形をしていますが

チェックを外してこのようにしましょう。

f:id:MozPaca:20161212133724p:plain

 

これでこのマテリアルはMaterial Functionで作成した

パラメータなどが扱えるようになります。

 

Material Instanceにしておく

今回作成したパラメータなどはMeshのサイズや形に依存してしまうため、

Material Instanceを作成し、あらかじめ調整できるようにしておきましょう。

 

Instanceにしたいマテリアルを右クリック→

Create Material InstanceでMaterial Instanceが作成されます。

f:id:MozPaca:20161212134110p:plain

 

このようになります。

先ほど記述したM_UE4_Man_ChestLogoはすでに

Material Instanceのため、このまま使用します。

f:id:MozPaca:20161212134207p:plain

 

Material Instanceでパラメータの調整をする

作成したMaterial Instanceを開き、

Meshの形状に合うようにパラメータを変更します。

 

今回はこんな感じにしてみました。

M_UE4Man_Body_Inst

f:id:MozPaca:20161212134442p:plain

 

M_UE4Man_ChestLogo

f:id:MozPaca:20161212134750p:plain

 

パラメータを時間で変更させる

作成したMaterial FunctionにはTimeノードなどを使用した

時間で何かするという処理は入っていません。

 

ですので、別のところでパラメータを変更させる必要があります。

 

まずはThird Person Characterのブループリントを開きます。

f:id:MozPaca:20161212135245p:plain

 

変数を一つ追加します。

Dynamic Material Instanceでパラメータを変更させるためのものです。

戻り値はMaterial Instance Dynamicで配列化しておきます。

f:id:MozPaca:20161212135341p:plain

 

そして、Construction Scriptで処理をこのように書きます。

Meshで使用しているマテリアルをすべて

Dynamic Material Instanceとして作成し、変数に格納しています。

f:id:MozPaca:20161212135519p:plain

 

次にイベントグラフに処理を書きます。

カスタムイベントからタイムラインにつなげ、

時間によってパラメータを変更します。

タイムラインの処理が終了すると、

Destroy Actorに流れるようにしておきます。

f:id:MozPaca:20161212135740p:plain

 

タイムラインはこんな感じです。

f:id:MozPaca:20161212140030p:plain

 

エフェクトを発生させる

任意のタイミングで発生できるように

カスタムイベントを作成したので、

適当なタイミングで呼び出したいと思います。

 

今回はこの死亡アニメーションが終了して、

0.2秒後にエフェクトを発生させましょう。

f:id:MozPaca:20161207151150p:plain

 

まずは、このアニメーションを開き

アニメーションの終了時に通知を追加します。

f:id:MozPaca:20161212140544p:plain

 

次に、このアニメーションを組み込んだ

アニメーションブループリントを開きましょう。

f:id:MozPaca:20161212140851p:plain

 

先ほど作成した通知イベントから、このように処理を書き

エフェクト発生用のイベントを呼び出します。

f:id:MozPaca:20161212141008p:plain

 

これで処理は完成です。

 

再生してみる

今回はPキーを押すとアニメーションが流れるようにしました。

www.youtube.com

 

すこし、粗が見えますね。

パラメータの微調整が必要そうです。