Web Analytics

こつこつエンジニア

現役アプリ開発者によるIT系特化ブログ

Unityで外からの光の影響を受けない真っ暗な部屋を作ってみよう!

f:id:madai21:20210720210353j:plain

はじめに

今回はUnityで外からの光の影響を受けない閉鎖的な真っ暗な部屋を作ってみたいと思います。
最終的に部屋の中にはライトを配置して部屋の中の一部だけ光があたる状態にしたいと思います。

環境

Unity 2020.3.12f1を使います。
unity3d.com

まずは部屋を作ってみる

まずMainCameraとDirectional Lightを画像の赤枠の内容で設定します。
f:id:madai21:20210803235130p:plain
f:id:madai21:20210803235240p:plain
次にRoomをCreate Emptyから作成し、
その子として3D Object > CubeでRight/Left/Top/bottom/Front/Backの6つ分作成します。
各オブジェクトは以下の画像の赤枠の内容で設定します。
f:id:madai21:20210803235357p:plain
f:id:madai21:20210803235653p:plain
f:id:madai21:20210803235722p:plain
f:id:madai21:20210803235732p:plain
f:id:madai21:20210803235741p:plain
f:id:madai21:20210803235752p:plain
f:id:madai21:20210803235803p:plain
部屋の中に配置するオブジェクトとして3D Object > Sphereを作成します。
各オブジェクトは以下の画像の赤枠の内容で設定します。
f:id:madai21:20210803235946p:plain
最後にSpot LightとしてLight > Spotlightを作成します。
f:id:madai21:20210804000120p:plain
この状態で実行してみましょう。
ライトついたままなので明るいままですね。
f:id:madai21:20210804000149p:plain
各種ライトを消してみましょう。
Directional LightとSpopt Lightを非アクティブにしてから再度実行します。
どうなるでしょうか?
f:id:madai21:20210804000552p:plain
f:id:madai21:20210804000608p:plain
うーん、Spot Lightの明かりは消えたみたいですが、部屋全体は暗くならないですね・・・
これは環境光が影響しているためです。
f:id:madai21:20210804000716p:plain

環境光を消してみる

環境光はメニューのWindow > Rendering > Lightingで設定できます。
f:id:madai21:20210804001214p:plain
EnvironmentタブからEnvironment LightingEnvironment ReflectionsIntensity Multiplerを0にします。
※設定後はそのままウィンドウを閉じても大丈夫です。
f:id:madai21:20210804001334p:plain
実行してみましょう。
真っ暗になりましたね^^
f:id:madai21:20210804001542p:plain
Spot Lightが消えたままなのでSpot Lightを再度アクティブにしてみましょう。
f:id:madai21:20210804001636p:plain
実行すると、上からのSpot Lightを浴びたSphereが映し出されましたね^^
f:id:madai21:20210804001651p:plain

おわりに

今回は環境光に影響されずCubeで囲われた仮想的な部屋を作りました。
部屋をランダムに組み合わせてキャラクタにたいまつなどの明かりを持たせたり壁に明かりを付けたりすると、地下ダンジョンっぽいのが作れそうですね^^

今回作成したUnityプロジェクトは以下の場所から取得できます。
しょぼいですが、宜しければご自由にご利用下さい。
github.com