爆弾の作り方

どーも!Free_Gamerです!

今回は・・・

 

爆弾の作り方

 

について、法に触れない範囲でお伝えします!

具体的な内容としては、

「3秒後に爆発する爆弾」を作っていきましょう!法に触れないはn(ry

必要なもの!

・スタティックメッシュ(爆弾)

・Timeline

・SpawnEmitteratLocation

・Lerp

・SetSclarParameterValue

・SetVectorParameterValue

・CreatDynamicMaterialInstance

 それでは解説していきましょう!

 

まず、爆弾のBP(ブループリント)を作りましょう!コンテンツブラウザで右クリックし、「ブループリントクラス」をクリックし、一番上の「Actor」をクリックしましょう!

f:id:Free_Gamer:20180512195607p:plain

名前は、「BP_Bomb」とでもしておきましょうか。爆弾ですからね。

f:id:Free_Gamer:20180512195701p:plain

「BP_Bomb」をダブルクリックし、BP画面に行きましょう!

次に、爆弾となるスタティックメッシュを決めましょう!

ビューポート画面に行き、コンポーネントを追加」クリックし、「球」というやつをクリックしましょう!Sphere(球)ですね。(もちろんこんな形は気に食わん!というのなら別のものを選んでもらっても構いませんよ!)

f:id:Free_Gamer:20180512191850p:plain

次はConstraction Script画面に行きましょう!

Constraction Scriptで、CreatDynamicMaterialInstance(Sphereノードを出しましょう!

そしてCreatDynamicMaterialInstanceReturnValueピンを引っ張り、変数へ昇格をクリックしましょう!

f:id:Free_Gamer:20180512192708p:plain

変数に昇格し、その変数の名前をDMI(DynamicMaterialInstanceの略)とでもしておきましょう!わかりやすいですからね。

f:id:Free_Gamer:20180512193759p:plain

なぜこの工程が必要なのかは後で解説いたします。

次に、イベントグラフに行きましょう!

イベントグラフでEventBeginPlayからピンを引っ張り、Timelineノードを出しましょう!

f:id:Free_Gamer:20180512200055p:plain

Timelineに名前が付けられるので、BombCountとでもしておきましょう!(画像では「BomCount」になっていて「b」が抜けていますが気にしないでください・・・)

Timelineをダブルクリックし、Timelineの画面に行きましょう!

Timelineの画面で、フロートトラックを追加し、追加されたフロートトラックの名前を分かりやすくCountDownにしておきましょう。

f:id:Free_Gamer:20180512201122p:plain

f:id:Free_Gamer:20180512201323p:plain

TimeLineの長さは4秒にしましょう!

次に、TimeLine「キー」を打っていきましょう!

1秒、2秒、3秒に値が「1」のキーを打っていきましょう!

0秒4秒のところに値が「0」のキーを打ちましょう!

そして、0.9秒、1.1秒、1.9秒、2.1秒、2.9秒、3.1秒のところにも値が「0」のキーを打ちましょう!

最終的に、こうなるはずです。

f:id:Free_Gamer:20180512202547p:plain

これでTimeLineの工程は以上です!

それでは、イベントグラフに戻りましょう!

画面左側のマイブループリント変数にある、DMI変数をグラフにGetしましょう!

f:id:Free_Gamer:20180512203730p:plain

f:id:Free_Gamer:20180512203819p:plain

DMIGetしたら、DMIのピンを引っ張り、SetSclarPlameterValueSetVectorParameterValueノードを出しましょう。

f:id:Free_Gamer:20180512204538p:plain

さて、前にConstraction Script画面でCreatDynamicMaterialInstanceノードを作成し、DMIという変数を作りましたが、このSetSclarParameterValueSetVectorParameterValueノードで爆発カウントダウン時に「球(Sphere)」のマテリアルを動的に変えたかったからDMI変数を作ったのです。

CreatDynamicMaterialInstanceノードは任意のマテリアルのインスタンスを作成するノードです。このノードで作成されたインスタンス情報を変数に格納してあげたのです。

そして、マテリアルインスタンス情報が入っているDMI変数をSetSclarParameterValue、SetVectorParameterValueにつないであげて、BPを使って動的にマテリアルを変更したかったのです。

f:id:Free_Gamer:20180512211218p:plain

近いうちにCreatDynamicMaterialInstanceの解説もしたいので、とりあえず解説はこの辺にしておきます。

 

さて、次にTimeLineノードとSetSclarParameterValue、SetVectorParameterValueを使って、マテリアルをカウントダウン時に変えていくのですが、ここでLerpというノードを出しましょう!

f:id:Free_Gamer:20180512214939p:plain

LerpAlphaの値が「0」の時に「A」の値を返し、「1」の時に「B」の値を返します。

TimeLineノードにCountDownという名前のFloat型のピンがあるはずなので、それをLerpAlphaにつなぎましょう!

もう1個Lerpノードを出し、同じようにAlphaにつなぎます。

f:id:Free_Gamer:20180512220841p:plain

そして、1個目のLerpReturnValueSetSclarParameterValueValueピンにつなぎましょう!次にSetSclarParameterValueParameterName「Emissive」と入れましょう!

f:id:Free_Gamer:20180512222022p:plain

次にSetVectorParameterValueValueピンをひっぱり、LinerColorを作成をクリックします。

f:id:Free_Gamer:20180512222405p:plain

するとこのノードが出てくるので、

f:id:Free_Gamer:20180512222510p:plain

2個目のLerpReturnValueLinerColorを作成の一番上Rにつなぎましょう!

そして、SetVectorParameterValueParameterNameColorと入れます。

次に、SetSclarParameterValueにつながってるLerpBの値を「50」にしましょう。そしてSetVectorParameterValueにつながっているLerpBの値を「1」にします。

そうすると、ここまでできたはずです。

f:id:Free_Gamer:20180512223934p:plain

ここまでのBPの処理を整理すると、

①ゲーム開始時

TimeLineノードが呼び出される

SetSclarParameterValueEmissiveパラメーターが1、2、3のタイミングで50になり、SetVectorParameterValueColorパラメーターのRになることで色が赤色に光る。

という感じです。

次に、実際に爆発させる処理を入れてみましょう!

TimeLineFinishedピンを引っ張り、SpawnEmitterAtLocationノードを出しましょう!

f:id:Free_Gamer:20180512232241p:plain

SpawnEmitterAtLocationEmitterTemplateから爆発エフェクトを選択しましょう!とりあえず「P_Explosion」でいいと思います!(僕は違うのを使いますが)

Locationピンには球(Sphere)の位置を渡してあげましょう!

グラフ内で右クリックしGetWorldLocation(Sphere)をクリックしましょう。そしてLocationピンにつなぎますよ。

これで、Sphereのある位置で爆発エフェクトが出るようになりました!

最後に、SpawnEmitterAtLocationの出力ピンを引っ張り、SetLifeSpanノードを出しましょう!

f:id:Free_Gamer:20180512233925p:plain

そして、InLifeSpan0.2と入れましょう!

こうすることで爆発エフェクトが再生後、爆弾である球(Sphere)が0.2秒後に消えることになります。

ここまで来たら最終的にはこうなります。

f:id:Free_Gamer:20180512234115p:plain

ここまでの流れを整理しましょう!

①ゲーム開始時

②カウントダウン開始。Updateに処理が流れ、マテリアルが怪しく光る

③TimeLineの再生が終わるとFinishedピンに処理が流れる

④爆発エフェクト再生

⑤爆弾消滅

といった感じです!

それではコンパイルし、実際に爆発するか見てみましょう!

レベルエディタに行き、レベル内に「BP_Bomb」をドラッグ&ドロップして、ゲームをプレイしてみましょう!


ブログ用 爆発チュートリアル

どうでしょうか!動画のようになったのなら大成功です!

ここまでかなりだらだらと長い文章で解説してしまったことお詫びいたします・・・。

それでもついてきてくれた方はありがとうございます!

あとは、TimeLineの時間を変えたり、キーの位置を変えたり、色を変更するなどなどやってみるのもいいと思います!

それではまた!^^ノシ

 

~追記~

一部説明不足がありました。補足いたします。

爆弾となるスタティックメッシュ(このブログの場合だとSphere)のマテリアルを編集しましょう。

爆弾のBP「BP_Bomb」を開き、画面左上のコンポーネントパネルのSphereをクリックしましょう。爆弾となるスタティックメッシュですね。

f:id:Free_Gamer:20180514002030p:plain

 そして、画面右側にSphereの詳細パネルにあるMaterialをダブルクリックしましょう。

f:id:Free_Gamer:20180514002229p:plain

すると、Sphereのマテリアルエディターに移行すると思うので、次のようにしてください。

f:id:Free_Gamer:20180514002627p:plain

赤枠で囲ってあるノードを出しましょう

「ScalarParameter」「MultiPly」ノードですね。

「ScalarParameter」には名前を入れられるので、「Emissive」と入れましょう。

f:id:Free_Gamer:20180514004940p:plain

そして、次に以下の手順を行ってください。

f:id:Free_Gamer:20180514003136p:plain

カラーを決めるノード(1,1,1,0って書いてある奴)にマウスカーソルを重ね、右クリックすると「パラメーターに変換」というのがあるのでそれをクリック。

すると名前を決められるので「Color」にしましょう。

f:id:Free_Gamer:20180514003607p:plain

そしてColorという名称にしたノードの白いピンを、右のベースカラーにつなぎましょう。

f:id:Free_Gamer:20180514003814p:plain

そして、画面左上にある「適用」ボタンを押して完了です!

説明不足で申し訳ありませんでした。また何かあればご指摘ください!