今回は、Unityを使ったリアルな空の作り方について紹介します。
リアルな空を作成するにあたって、「Wispy Skybox」というフリーアセットを使用します。
Skyboxに設定されているMaterialを変更することで、リアルな空を表現することが出来ます。
より高品質な天候アセットを使う場合には「Enviro」アセットがおすすめです。
【Unity】Skyboxを使ったリアルな空や昼夜の作り方
まずは、アセットストアより「Wispy Skybox」をダウンロード、インポートしましょう。
インポートが完了したら、MainCameraのインスペクターからClear FlagsをSkyboxに変更します。これにより、Skyboxが描画されます。
続いて、「Window」→「Rendering」→「Lighting Settings」を選択します。
Skybox Materialを「WispySkyboxMat」に変更します。
この時点でシーンビューを見渡すと分かりますが、雲が浮いていて綺麗な空になっています。
これは、私が制作しているFPSのゲームビューからスクリーンショットした画像ですが、プレイヤーが外を動き回るようなゲームを作りたい場合は、空に拘ってもいいかもしれません。
昼夜を作成して太陽を動かす
続いて、時間が経過するのと同時に、太陽を動かして昼夜を表現するようにします。
「Create」→「Material」から新規マテリアルを作成します。私は「TestSkybox」という名前にしましたが、好きなものにしてもらって構いません。
作成したマテリアルを選択して、Shaderを「Skybox/Procedural」に変更します。
このシェーダを使用することで、昼夜を表現することが出来ます。
先ほどと同様に「Window」→「Rendering」→「Lighting Settings」から今作成したマテリアルを設定します。
カメラが上を見上げるようにすると・・・太陽が表示されました。
マテリアルのインスペクターにある「Sun Tint」や「Atmosphere Tint」の設定から太陽や空の色を変更することが出来ます。
太陽を動かすスクリプトを作成
後は、太陽を動かすためのスクリプトを作成すればOKですね。
太陽が動かないことには、昼夜の移り変わりを表現することが出来ません。
ちなみに、Directional Lightオブジェクトの向きを変えることで、太陽を移動させます。
私は「Light」と言う名前でスクリプトを作成しました。
動画で昼夜の移り変わりが分かりやすいように、1秒間に36度回転させるようにしています。
Directional Lightは、Z軸に光が差し込むので、回転は反時計回りにします。
作成したスクリプトをDirectional Lightにアタッチしてゲームを実行します。
固定カメラの場合は、太陽の移動が分かりやすいように位置を調整してください。
ゲームならではの高速スピードになっていますが、フリーアセットのみでかなり本格的な昼夜を表現することが出来たと思います。
マテリアルの色合いを調整することで、さまざまなグラデーションを見ることができます。