読者です 読者をやめる 読者になる 読者になる

Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 マテリアルを使って点滅ダメージリアクションを実装する

よくアクションゲームやシューティングゲームでは、ダメージリアクションとして点滅などの光る表現が使われます。UE4でそれを実現するにはマテリアルを使う必要があります。

実際に光ると以下のような感じに。

f:id:alwei:20150712202915j:plain

マテリアルを修正する 

光らせたいアクターのスタティックメッシュやスケルタルメッシュのマテリアルを開きます。

今回はスターターコンテンツに用意されている"SM_Rock"を使っています。そしてそのマテリアルの"M_Rock"を開きます。

まずは"VectorParameter"ノードを呼び出します。そしてそれをエミッシブカラーと繋いでおきます。そしてパラメーター名を"Color"という名前でセットしておきます。

f:id:alwei:20150712204048j:plain

既にエミッシブカラーにピンが繋がっている場合は最終結果と"Mulitply"ノードでかけ算をすることにより上手くいきます。

ブループリント作成

点滅させたいメッシュをブループリント化しておきます。親クラスはActorからでもなんでも構いません。

f:id:alwei:20150712204410j:plain

スタティックメッシュコンポーネントを追加しておきます。これで準備が整いました。

Construction ScriptでDynamic Material Instanceを作成

"Constructio Script"内でマテリアルを自由に変化させるために"Create Dynamic Material Instance"を呼び出します。

f:id:alwei:20150712205043j:plain

"Dynamic Material Instance"の詳細は以下の記事がとても詳しいので参考にしてください。

もんしょの巣穴blog [UE4] Dynamic Material Instanceを使う

変数に保存しておく

"Event BeginPlay"内で、"Material Instance Dynamic"型の変数をひとつ作成しておき、スタティックメッシュからマテリアルを取り出して、キャストしたものを保存しておきます。

f:id:alwei:20150712205537j:plain

これでいつでもVector Parameterの編集ができるようになります。

タイムラインとカラーカーブを作成

最初に"ApplyColor"というカスタムイベントを作成しておきます。これは外からの呼び出し用です。

f:id:alwei:20150712205813j:plain

これでタイムラインを使ってカラーカーブの変化がつけられるようになります。"Set Vector Parameter Value"で実際にパラメーター変化をつけます。"Parameter Name"にはマテリアルで作成した"Vectorl Parameter"の名前を指定してあげてください。

今度はタイムライン内部のカーブです。

f:id:alwei:20150712205946j:plain

まずは"カラートラックの作成"のボタンを押してトラックを作成します。次に変化する長さを調整しておきます。今回は一瞬なので"0.20"秒という設定です。

デフォルトだとカーブが表示されていませんので、右クリックから"カーブを表示"を選択しておいてください。これでカラーカーブの編集がやりやすくなります。

今回は赤色の点滅なので、瞬間的に"R"要素だけが上がるようにしています。"G"と"B"は最初から最後まで0のままにしておきます。逆に"A"に関してはずっと1のままです。あとは"R"が灘らかに小さくなっていけばOKです。

レベル上に配置、スイッチを設定

あとはレベル上に作成したブループリントを配置してください。

f:id:alwei:20150712210454j:plain

最後にレベルブループリントから、参照できるようにしてから適当なボタンから"Apply Color"を呼べるようにします。

f:id:alwei:20150712210553j:plain

ここまでが出来ていれば…

 

 

のような感じで点滅表示、ダメージリアクションのような演出が出来ると思います。意外とこの表現はよくあるので、知っているとアクションゲームなどは作りやすくなると思います。

時間や色、カーブの調整でもっと色々な演出になると思うので、ぜひ活用してみてください。