目次
はじめに
注意
UE5Preview2の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
キャラクターが障害物で見えなくなる対策として障害物を半透明にする技術があります。モン●ンラ●ズなど
半透明にもトランスルーセントやマスクでディザをかけたりなど方法がありますが、今回は軽量なディザで行きたいと思います。
▲この記事を読むとできること
解説
①SM_ChamferCubeがカメラをブロックしないようにする
ThirdPersonMapにあるSM_ChamferCube。
これ自体にカメラをブロックするコリジョン応答をしているため、キャラクターでこれを押すとカメラがべこべこして気持ち悪い動きになります。
いきなりドアップになるグレイマンの股
そのためレベル上のSM_ChamferCubeの3つを選択してコリジョン応答を変更しましょう。
コリジョンプリセットをCustomにします。
カメラのトレース応答をオーバーラップに変更します。
これでこのオブジェクトにカメラが近づけるようになりました。
ただしこれだと非常に見づらいのでカメラに応じてこのアクタのマテリアルを半透明にしようと思います。
②マテリアル関数を作成する
どのマテリアルでもこの機能を使えるようにマテリアル関数という機能を使います。
コンテンツ右クリックからマテリアル関数を作成します。
名前はMaterialFunctionの頭文字をとって、
MF_DistaneDitherにしましょう。
③マテリアル関数の編集
作成したMF_DistaneDitherを開き以下のように接続します。
カメラの位置とアクタの位置に応じてDitherをかける組み方です。
Input系はマテリアル関数の引数です。ディザのかかり具合を調整する用です。
詳細からscalarを選択して名前を編集しておきましょう。
コンパイルを必ずしましょう!
④マテリアル関数の利用
この青いマテリアルはLevelPrototyping/Materials/M_Solid.M_Solid'のマテリアルインスタンスなのでM_Solidを編集していきます。
M_Solidを開きMF_DistaneDitherをノード内にドラッグアンドドロップします。
M_Solidノードを選択して詳細からBlendModeをMaskedに変更します。
するとオパシティマスクが使用できるので接続します。
インプットが無いとエラーが出るのでそれぞれのピンをパラメータに昇格します。
それぞれデフォルト値を150、0.02にしておきましょう。
コンパイルして準備完了です。
実行するとこのようにDistanceの値に応じた距離で半透明のようなディザがかかります。
ディザのかかり具合などはMI_Solid_Blueからランタイムで変更できるので変化を試してみましょう。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。