日々のいろいろ

日々を綴ったほとんど日記

UE4でオブジェクトをフェードアウトさせる方法

まえがき

アクタを壊したのは良いけれど、破片にずっと残られているのは困ります。
でも、DestroyActorしてパット消えてしまうのは味気ないですし。
ならフェードアウトさせようよと言う話です。

事前知識

破片でなくても使えますが、今回はこの記事の後に続けて書いています。

legendimposter.hatenablog.jp

環境

  • Unreal Engine 4.25(日本語化)

  • プロジェクト設定ーThirdPersonテンプレート(ブループリント)
    スターターコンテンツ有

オブジェクトのフェードアウト 失敗例

まずパット消えてしまうDestroyActorでの例

f:id:legendimposter:20200905140226p:plain

Delayで破片が散らばって少しの間は残るようにしているが、消える時はすぐに消えてしまいます。 
当たり前と言えば当たり前ですね。

何かアクタをフェードさせるBPとか有れば良いなとは思ったがなさそうです。

マテリアルの設定

どうやらマテリアルでOpacityを弄るのが最適解のようなので、そうしてみます。
まず、対象のマテリアルを開きます。

f:id:legendimposter:20200905164757p:plain

開いたらマテリアル結果ノードをクリックして詳細タブからブレンドモードをTranslucentに設定します。

f:id:legendimposter:20200905165055p:plain
このマテリアルにはラフネスとNomalが割り当てられていましたが、ブレンドモードを変更すると無効になっているかと思います。
透過処理のライティングモードを変更しながら確認してみてください。
ラフネスやNomalも同時に扱えるようになっていると思います。
僕はSurface Forward Shadingを使用しました。

f:id:legendimposter:20200905165142p:plain

そうしたら、ScalarParameterノードを追加してオパシティに接続します。
詳細タブから名前をOpacityに変更してデフォルト値を1に設定します。

f:id:legendimposter:20200905165526p:plain

ここまで出来たら適用してマテリアルの設定は完了です。

フェードアウトの設定

フェードに使うのは以下の3種類のノードです。
Create Dynamic Material instanceとSet Scalar Parameter Value On Materialsに関しては見れば大体分かると思うので、タイムラインの出力されている変数と設定方法について説明していきます。

f:id:legendimposter:20200905170600p:plain
f:id:legendimposter:20200905170608p:plain
f:id:legendimposter:20200905170617p:plain

まず、タイムラインを追加したらダブルクリックしてタイムラインエディタを開きます。
フロートトラックを追加したら、トラック内でShiftを押しながら左クリックでポイントを追加します。

f:id:legendimposter:20200905171235p:plain

今回は0秒の時に1、3秒の時に0になるように数値を入力するなどして設定します。
この数値がタイムラインに設定されているFadeです。
この数値はOpacityに代入される訳です。

f:id:legendimposter:20200905171458p:plain

全体のノードがこちらです。

f:id:legendimposter:20200905170512p:plain

これを、On Component Fracutureの後などに続けて書けば以下の動画のようにフェードアウトして消えていきます。

参考ページ 

unrealbussan.hatenablog.com