僕の私のUnrealな日々

UE4のBluePrintを使って小さなギミックを作ったりしてます。ブログを通じて情報共有ができたらなと思います。

UE4:簡単なアクターのフェードアウトの実装について

どうもぶっさんです。

以前キャラクターのFadeOutを作ったのですが、

 

 

せっかくなので、アクターのフェードアウトも作りました。

 

 

 アクターのフェードアウトを実装しよう!

f:id:Bussan_dayo:20150407120627p:plain

 仕様:

Play開始5秒後に5秒間かけてトラックが消えていく。

使用したもの:

PlatformerGameのSM_Truck_Damaged(サンプルプロジェクト)

 

 

マテリアルの作成

まずこのトラックのマテリアルを複製します。

f:id:Bussan_dayo:20150407120704p:plain

 

 

複製したマテリアルのBlendModeをTranslucentにします。

f:id:Bussan_dayo:20150407120719p:plain

 

エディタ上でConstantを呼び出し、ノードを右クリックしパラメーターに変換をクリックします。名前をOpacityにし、値を1にします。そしてオパシティに繋げます。

f:id:Bussan_dayo:20150407120729p:plain

 

BluePrintでパラメーターに変換したOpacityを変化させていきます。

 

ブループリントの作成

トラックのブループリントを作成します。

5秒後に消えるようにするため[イベントBeginPlay]を出し、Delayノードを繋げます。Durationに5を入力します。これで5秒後にイベントが起こるようになりました。

 

次にStaticMeshをコンポーネントからグラフにドラッグし、そこから[CreateDynamicMaterialInstance]を出します。これでBluePrint上でマテリアルインスタンスを作成します。

f:id:Bussan_dayo:20150407120744p:plain

 

次にタイムラインを使用します。

タイムラインをダブルクリックしTrackを作成します。

f:id:Bussan_dayo:20150407121132p:plain

 

オパシティは0に近づいていくと透過されていくので、0秒の時の値を1に、5秒の値を0にします。

f:id:Bussan_dayo:20150407120837p:plain

 

次に[CreateDynamicMaterialInstance]のReturnValueから線を引っ張り[SetScalarParameterValue]ノードを出します。そしてParamaterNameにOpacityを入力します。これでマテリアル側のOpacityの値を変えることが出来ます。Valueに先ほど作ったNewTrackを繋げます。

f:id:Bussan_dayo:20150407120751p:plain

 

そして、これはマテリアルのみ透過されているので、FinishedにDestroyActorノードをつなぎます。

 

 

一応以前書いたこの記事 

unrealbussan.hatenablog.com

 

と組み合わせれば、動画のようなことも可能です。

ちなみに、ゴブリンでこの方法を行うと目玉だけ残るので、Element Indexの値を1にしたCreateDynamicMaterialInstanceが必要です。

 

この方法が全てじゃないと思うので他の方法がありましたら教えて下さい。

BluePrint側でBlendModeの切り替えとか出来たりするのかなぁ・・・

 

 

以上