まえがき
アクタを壊したのは良いけれど、破片にずっと残られているのは困ります。
でも、DestroyActorしてパット消えてしまうのは味気ないですし。
ならフェードアウトさせようよと言う話です。
事前知識
破片でなくても使えますが、今回はこの記事の後に続けて書いています。
環境
-
Unreal Engine 4.25(日本語化)
-
プロジェクト設定ーThirdPersonテンプレート(ブループリント)
スターターコンテンツ有
オブジェクトのフェードアウト 失敗例
まずパット消えてしまうDestroyActorでの例
Delayで破片が散らばって少しの間は残るようにしているが、消える時はすぐに消えてしまいます。
当たり前と言えば当たり前ですね。
何かアクタをフェードさせるBPとか有れば良いなとは思ったがなさそうです。
マテリアルの設定
どうやらマテリアルでOpacityを弄るのが最適解のようなので、そうしてみます。
まず、対象のマテリアルを開きます。
開いたらマテリアル結果ノードをクリックして詳細タブからブレンドモードをTranslucentに設定します。
このマテリアルにはラフネスとNomalが割り当てられていましたが、ブレンドモードを変更すると無効になっているかと思います。
透過処理のライティングモードを変更しながら確認してみてください。
ラフネスやNomalも同時に扱えるようになっていると思います。
僕はSurface Forward Shadingを使用しました。
そうしたら、ScalarParameterノードを追加してオパシティに接続します。
詳細タブから名前をOpacityに変更してデフォルト値を1に設定します。
ここまで出来たら適用してマテリアルの設定は完了です。
フェードアウトの設定
フェードに使うのは以下の3種類のノードです。
Create Dynamic Material instanceとSet Scalar Parameter Value On Materialsに関しては見れば大体分かると思うので、タイムラインの出力されている変数と設定方法について説明していきます。
まず、タイムラインを追加したらダブルクリックしてタイムラインエディタを開きます。
フロートトラックを追加したら、トラック内でShiftを押しながら左クリックでポイントを追加します。
今回は0秒の時に1、3秒の時に0になるように数値を入力するなどして設定します。
この数値がタイムラインに設定されているFadeです。
この数値はOpacityに代入される訳です。
全体のノードがこちらです。
これを、On Component Fracutureの後などに続けて書けば以下の動画のようにフェードアウトして消えていきます。
フェードアウトッ!! pic.twitter.com/gkqE1ha1VQ
— Masataka Goto (@nfrt_official) 2020年9月5日
参考ページ