UnityUnityメモ

Unity初心者必見!Directional Lightを回転させてリアルな時間変化を作る

Unity

はじめに

Unityでゲームやシミュレーションを作るとき、時間の経過によって環境の光が変化する演出はとても魅力的ですよね!例えば、日没から夜になり、夜明けを迎えるというリアルな光の変化が加わるだけで、ゲームの雰囲気がぐっと良くなります。

でも、「Directional Lightをどうやって回転させればいいの?」「スクリプトって難しそう…」と感じる初心者も多いかもしれません。


この記事では、Directional Light(方向光)を回転させることで、簡単にリアルな光の変化を作る方法を解説します。Unity初心者でも分かりやすいように、1ステップずつ丁寧に進めていきますので、一緒にやってみましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



Step 1: Directional Lightの準備

まずは、環境光を操作するための基本設定を行いましょう!Directional Lightはシーン全体に光を当てるライトで、これを動かすことで時間の経過を表現します。


1. 新規プロジェクトの作成

Unityを起動して新しい3Dプロジェクトを作成します。
プロジェクト名は自由ですが、「LightRotationDemo」など分かりやすい名前を付けると良いですね。


2. Directional Lightの確認

  1. ヒエラルキー(Hierarchy)ウィンドウを見てください。デフォルトで「Directional Light」という名前のオブジェクトがあるはずです。これがシーン全体に光を当てる方向光です。
  2. 「Directional Light」をクリックして選択します。

3. スカイボックスの設定(オプション)

スカイボックスを設定すると、時間の変化に合わせた空模様がリアルに表現できます。

  1. Lighting ウィンドウを開く
    メニューから「Window」→「Rendering」→「Lighting」をクリックして、Lightingウィンドウを開きます。
  2. スカイボックスを設定する
    Lightingウィンドウ内の「Environment」セクションにある「Skybox Material」のドロップダウンをクリックし、適切なスカイボックス素材を選択します。
    • Unity Standard Assetsに含まれるスカイボックス素材やAsset Storeからダウンロードした素材を使うと便利です。

4. Directional Lightの初期設定

  1. 「Inspector」ウィンドウで「Directional Light」の設定を確認します。
  2. Intensity(光の強さ)やColor(色)を調整して、シーンの雰囲気を作りましょう。昼間の光ならやや黄色がかった白色、夕方ならオレンジ色が適しています。

これでDirectional Lightの準備が整いました!次は、光を動かすスクリプトを作成していきますよ。



Step 2: スクリプトの作成

次に、Directional Lightを回転させて時間の経過を表現するスクリプトを作成します。Unityでのスクリプト作成は初めてでも大丈夫!一緒に進めていきましょう。


1. 新しいスクリプトを作成

  1. プロジェクトウィンドウを開く
    Unityの下部にある「Project」ウィンドウを確認してください。
  2. スクリプトを作成するフォルダを用意
    「Assets」フォルダを右クリックして、「Create」→「Folder」を選択し、「Scripts」という名前のフォルダを作成します。
  3. C#スクリプトを作成
    「Scripts」フォルダを右クリックして、「Create」→「C# Script」を選択します。スクリプト名をLightRotateとします。

2. スクリプトを編集

  1. 作成したLightRotateスクリプトをダブルクリックして、スクリプトエディタ(通常はVisual Studio)が開きます。
  2. 以下のコードをスクリプトに入力してください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LightRotate : MonoBehaviour
{
    void Update()
    {
        // ライトを回転させる処理
        transform.Rotate(new Vector3(0, 60, 0) * Time.deltaTime);
    }
}
  • new Vector3(0, 60, 0)は回転軸と速度を指定しています。ここではY軸を中心に1秒で60度回転します。
  • Time.deltaTimeを掛けることで、フレームレートに依存せず滑らかに動作します。

3. スクリプトを保存

編集が終わったら、Ctrl + S(Windows) または Cmd + S(Mac) でスクリプトを保存してください。


4. エラーがないか確認

Unityに戻ると、コンパイルが自動的に実行されます。Consoleウィンドウでエラーがないことを確認してください。もしエラーが表示されていたら、コードを再度見直してください。


これでスクリプトの作成は完了です!次は、このスクリプトをDirectional Lightにアタッチして、動作確認を行います。



Step 3: スクリプトをアタッチ

スクリプトを作成したら、それをDirectional Lightに適用して動作させます。この作業を「スクリプトをアタッチする」と言います。とても簡単なので、一緒にやってみましょう!


1. ヒエラルキーでDirectional Lightを選択

  1. ヒエラルキー(Hierarchy)ウィンドウを開いて、「Directional Light」をクリックして選択します。
  2. 選択した状態で「Inspector(インスペクター)」ウィンドウに移動します。

2. スクリプトをアタッチ

  1. プロジェクトウィンドウで作成したLightRotateスクリプトを探します。
    • スクリプトは「Assets」フォルダ内の「Scripts」フォルダにあります。
  2. ドラッグ&ドロップでアタッチ
    スクリプトをクリックし、InspectorウィンドウのDirectional Lightの空白部分にドラッグ&ドロップします。これで、Directional Lightにスクリプトがアタッチされました。

3. 動作確認

  1. 再生ボタンをクリック
    Unityエディタの上部にある「Play(再生)」ボタンをクリックします。
  2. ライトの回転を確認
    シーンビューでDirectional Lightが回転していることを確認してください。ライトが回転すると、シーンの明るさや影の位置が変化します。

4. カスタマイズ(オプション)

  • 回転速度を調整したい場合は、LightRotateスクリプトのnew Vector3(0, 60, 0)の「60」の値を変更してください。
    • 値を大きくすると回転が速く、小さくすると遅くなります。

これで、スクリプトのアタッチと動作確認が完了しました!ライトの動きがうまくいかない場合は、スクリプトやアタッチ手順をもう一度確認してみてください。



よくある質問 (Q&A)

Q
ライトが動かないのはなぜ?
A

スクリプトが正しくアタッチされているか、ヒエラルキーで「Directional Light」が選択されているか確認してください。

Q
光がシーンに影響しないのはなぜ?
A

「Lighting」ウィンドウでスカイボックスの設定や影の設定を見直してください。

Q
回転速度を調整するには?
A

スクリプトのtransform.Rotate(new Vector3(0, 60, 0) * Time.deltaTime);60の値を変更して調整できます。

おすすめのアセット

Enviro 3 – Sky and Weatherは、Unityで使える強力な天候システムです。このアセットは、リアルな空模様や天気の変化を簡単に追加できるのが特徴です。たとえば、晴れ、雨、雪、雷などの天気を再現でき、昼夜のサイクルもサポートしています。また、視界の変化や風の強さも調整可能です。