【Unity】(5分で分かる)背景の設定方法

ゲームを作るとき、シーンに合わせた背景を設定することで、雰囲気や臨場感を出すことができます。
しかし、2Dなら背景に画像を設定すればいいですが、3Dの場合はどうすればいいでしょうか?
理想的には、空に雲を浮かべたり、夜空に星を散りばめたりしたいですよね?
ただ、難しそう&とっつきにくいイメージがあるかもしれません。
そんなときは、UnityのSkyboxを使うと簡単に実装できます。
3Dゲームの背景にはSkybox
3Dゲームで背景を設定するときは、アセットストアから取得したSkyboxのマテリアルを使いましょう。
そうすることで、お手軽に空模様を演出できます。
いくつか例を紹介します。(rpgwhitelockさんのAllSky Free – 10 Sky / Skybox Setを引用)



設定方法
それでは本題の設定方法を解説していきます。
まずは、アセットストアからいい感じのSkyboxを持ってきます。ストア上でSkyboxと検索すればでてきます。
僕は今回、このFantasy Skybox FREEというのが気になったので、My Assetsに追加しました。
そしたら、Unityに戻って、ダウンロード&インポートします。

インポートすると、Assetsフォルダに新しいフォルダが生成されているかと思います。そのフォルダの中にSkyboxに設定できるマテリアルが入っています。
Assets>Fantasy Skybox Free>Panoramics>FS013のフォルダのなかに、いい感じの夕焼けSkyboxを発見したので、今回はこれを設定してみたいと思います。
設定方法はとても簡単です。
まず、Window>Rendering>Lightingを選択します。

windowが開いたら、Environmentタブを開き、Skybox Materialという部分に自分が設定したい背景マテリアルをドラッグ&ドロップします。

このマークが名前についているものは、マテリアルであることを表していますので、Skyboxに設定できます。

実際に設定してみるとどうでしょうか?空がきれいな夕焼けに変わりました!

スクリプトからも設定可能
背景はスクリプトからも変更することが出来ます。
試しに下記のスクリプトを書いてみました。
using Unity.VisualScripting;
using UnityEngine;
public class ChangeSky : MonoBehaviour
{
[SerializeField] Material Day;
[SerializeField] Material Evening;
[SerializeField] Material Night;
void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{
ChangeSkyFunction(Day);
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{
ChangeSkyFunction(Evening);
}
if (Input.GetKeyDown(KeyCode.Alpha3))
{
ChangeSkyFunction(Night);
}
}
void ChangeSkyFunction(Material sky)
{
RenderSettings.skybox = sky;
}
}
ヒエラルキーに適当にemptyゲームオブジェクトを作ってスクリプトをアタッチします。
そして、インスペクターから、Day、Evening、Nightにそれぞれふさわしいマテリアルを割り当てます。

プログラム的には、キーボードの’1’が押されると昼になり、’2’を押されると夕方になり、’3’を押されると夜になるようになっています。
実際に実行してみたところが以下の動画です。
しっかり変わっていますね!
適切なタイミングでRenderSettings.skybox = sky;のようにしてあげることで、場面に合わせた背景を設定できるようになります。
空を演出して没入感を高めよう!
背景自体はゲームになんの影響も及ぼしません。
しかし、場面に合った空を演出することで、その分、プレイヤー自身がゲームの世界に入り込んだかのように没入してもらいやすくなります。
ぜひしっかり押さえ、没入感ある感動的な演出づくりに活かしていきましょう。