広告 レベル(マップ)関連テク

昼夜切り替えサイクルを設定する方法

昼夜切り替え方法をご紹介します。(暫定版です)

動作環境

当記事の動作環境は以下の通りです。
バージョンや環境によっては、正常に動作しない可能性があります。

ポイント

OS:Windows11 (Ver 22H2)

GPU:NVIDIA GeForce RTX 3060 Ti (Ver 3.27.0.112)

UE:UnrealEngine5 (Ver 5.3.0)

また、プロジェクトはサードパーソンプロジェクトの使用を前提とします。

はじめに

当記事では、以下の動画を参考に昼夜切り替え方法を実装しました。
しかし、当サイトの管理人環境では夜に星空が出ない状態になりました。
さらに動画のコメント欄を見ると、昼夜切り替えサイクルの時間を変更すると動かないなどの不具合も報告されています。

そのため、当記事では暫定版しており、解決方法などが見つかった場合は随時追記していきます。

昼夜切り替え方法

DirectionalLightの複製

DirectionalLightを複製し、一方を昼、もう一方を夜にします。

DirectionalLightの複製
DirectionalLightの複製

トランスフォームを編集

DirectionalLightについて、トランスフォームを変更します。
夜側の回転を全て-90に設定します。逆に昼側の回転は全て0に設定します。

各項目を-90に変形した様子

色の変更

夜側のDirectionalLightについて、Light Colorを青や黒など暗めの色に設定します。

レベルブループリントを編集

レベルブループリントを開きます。

レベルブループリントを開く
dayspeed変数の作成

daySpeed変数を作成します。Float型にしてください。

作成後、一度コンパイルして保存します。

作成したdaySpeedに値を設定します。
詳細欄のデフォルト値に「Day Speed」があるはずなので、そこに10を設定します。

dayspeedに値を設定する

続いて、下図のようにノードを接続します。
真ん中は「Multiply」ノードです。

昼夜切り替えイベント1

アウトライナーで昼側のDirectionalLightを選択した状態で、レベルブループリントを右クリックして「Create a Reference to DirectionalLight」を選択します。

DirectionalLightをノードに追加

その後、下図のようにノードを接続します。

昼夜切り替えイベント2

ここまでで一度ゲームをプレイしてみると、太陽がぐるぐると回って1日のサイクルができることを確認できます。

さらにこの後、下図のようにノードを接続します。(緑部分は既に作成済み、橙部分を作成)

昼夜切り替えイベント3

最後に、上図の右側の「Branch」以降を下図のように作ります。

昼夜切り替えイベント4

これで一応完成ですが、最初に記載した通り、管理人の環境では夜空に星が出ないなど不具合がある状況です。

最後に

まだ不完全な機能のご紹介で申し訳ございません。
今後対策等が見つかり次第、随時追加します。

2023.09.30追記
以下の動画を見つけました。こちらを今後試してみます。

-レベル(マップ)関連テク