UE4:簡単なアクターのフェードアウトの実装について
どうもぶっさんです。
以前キャラクターのFadeOutを作ったのですが、
せっかくなので、アクターのフェードアウトも作りました。
アクターのフェードアウトを実装しよう!
仕様:
Play開始5秒後に5秒間かけてトラックが消えていく。
使用したもの:
PlatformerGameのSM_Truck_Damaged(サンプルプロジェクト)
マテリアルの作成
まずこのトラックのマテリアルを複製します。
複製したマテリアルのBlendModeをTranslucentにします。
エディタ上でConstantを呼び出し、ノードを右クリックしパラメーターに変換をクリックします。名前をOpacityにし、値を1にします。そしてオパシティに繋げます。
BluePrintでパラメーターに変換したOpacityを変化させていきます。
ブループリントの作成
トラックのブループリントを作成します。
5秒後に消えるようにするため[イベントBeginPlay]を出し、Delayノードを繋げます。Durationに5を入力します。これで5秒後にイベントが起こるようになりました。
次にStaticMeshをコンポーネントからグラフにドラッグし、そこから[CreateDynamicMaterialInstance]を出します。これでBluePrint上でマテリアルインスタンスを作成します。
次にタイムラインを使用します。
タイムラインをダブルクリックしTrackを作成します。
オパシティは0に近づいていくと透過されていくので、0秒の時の値を1に、5秒の値を0にします。
次に[CreateDynamicMaterialInstance]のReturnValueから線を引っ張り[SetScalarParameterValue]ノードを出します。そしてParamaterNameにOpacityを入力します。これでマテリアル側のOpacityの値を変えることが出来ます。Valueに先ほど作ったNewTrackを繋げます。
そして、これはマテリアルのみ透過されているので、FinishedにDestroyActorノードをつなぎます。
一応以前書いたこの記事
と組み合わせれば、動画のようなことも可能です。
ちなみに、ゴブリンでこの方法を行うと目玉だけ残るので、Element Indexの値を1にしたCreateDynamicMaterialInstanceが必要です。
この方法が全てじゃないと思うので他の方法がありましたら教えて下さい。
BluePrint側でBlendModeの切り替えとか出来たりするのかなぁ・・・
以上