はじめに
Unreal Engine (UE) Advent Calendar 2024の10日目の記事です。
KOTAKE CREATEという名義で「8番出口」などをリリースしているコタケと申します。
今回の記事は「8番出口」の通路の奥から流れてくる、赤い水のような異変の制作事例です。
すべて解説するのが難しかったり、忘れている所もあった為、
一部割愛しています。あらかじめご了承ください。
UEのバージョンはUE5.3です。
赤い水について
・触れるとゲームオーバーになる
・通路の奥から流れてくる
作り方
現在のUE5にはNiagara Fluidsなどのリアルな流体の描写の出来る物があったりしますが、
扱うのが難しそうだったのと、そこまでリアルな表現が必要という訳ではなかったので
今回はスタティックメッシュをマテリアルで変形させるシンプルな方法を選択しました。
スタティックメッシュの作成
水が流れてくるように見せる為に、メッシュの始点から終点まで、0から1の値を持ったスタティックメッシュが必要になります。
マテリアルで使うための値を持たせるには、UV、頂点カラー、テクスチャなどがありますが、今回はUVの値を使用します。
メッシュの作成にはUEの機能の1つであるGeometry Scriptを使用しました。
Append Sweep Polylineというノードが、
Polyline Verticesを伸ばすような形で、Sweep Pathに沿ってメッシュを作成してくれます。
Append Sweep PolylineとPolyline Verticesのノード
Polyline Verticesは分割数のパラメータ(Division)に応じてSplineのTransformを取得しています。
Append Sweep Polylineで作成したメッシュは
最初からUVのグラデーションが始点から終点まで出来ていたのでこのまま使用しました。
(曲がり角でメッシュが重なっていますが、今回は許容しました)
マテリアルの作成
一から水のマテリアルを作るのは時間がかかりそうだったので、マケプレ(現在はFab)にあったマテリアルを改造しました。
Water Materials
改造
ワールドポジションオフセットで最初は通路の下にメッシュを隠しておき、
奥の部分からメッシュが元の位置に戻るようなノードを組みます。
また、PixelDepthOffsetを使って床との接触部分があまり目立たないようにしていました。
コリジョン、マテリアルパラメーターの制御
水に触れるとゲームオーバーにさせるため、
マテリアルの動きと合わせてコリジョンも移動させています。
(Timeline Lerp Floatは自作マクロです。普通のタイムラインでも可能だと思います。)
カメラシェイク
水に流されてるように見せるため、カメラシェイクを付けています。
また、より流されたように見せるために
プレイヤーをコリジョンにアタッチしてそのまま移動させたりもしています。
おわりに
今回の通路のような限定的な状況でしか使えない手法な為、あまり他に活かせたいかもしれませんが、何かの参考になれば幸いです。
実は今年のIndie Developers Conferenceで講演させていただいた時も赤い水の製作事例について少し触れたのですが、こういった特殊表現に関する記事や講演が好きなので、もう少し詳しく解説した物を書きたくなりました。
新作をリリースした時などにでも、また別の表現の記事が書ければなと思います。
最後までお読みいただきありがとうございました。