【Unity】Unity 2Dライティング入門:URP 2D Renderer・Light 2D・影の付け方

作成: 2026-07-12最終更新: 2026-07-13

2Dゲームの雰囲気はライティングで激変します。URPの2D Rendererへの切り替え、Light 2Dの4タイプ(Global・Point・Freeform・Sprite)の使い分け、Global Lightで暗くしてPoint Lightで明かりを足す設計、Shadow Caster 2Dで影を落とす方法、松明を持つプレイヤーの実践例まで解説します。

暗いダンジョンに松明の光がゆらめく、ネオンがキャラの輪郭を照らす、夕暮れの街が茜色に沈む——2Dゲームの 雰囲気 は、ライティングで劇的に変わります。でも 3Dのライティング で使うDirectional Lightを2Dシーンに置いても、スプライトはうんともすんとも言いません。2Dには2D専用の光の仕組みがあるからです。

この記事では、UnityのURPで2Dライティングを始めるための土台——2D Rendererへの切り替え から、Light 2Dの4タイプ の使い分け、Global+Pointの2段構え という設計、Shadow Caster 2D で影を落とす方法、そして 松明を持つプレイヤー の実践例までを解説します。

暗い2Dダンジョンの中で、プレイヤーが持つ松明の光が円状に広がり、周囲の壁や床をやわらかく照らしているイメージ

この記事でわかること

  • URPの2D Renderer に切り替える(3D標準ライトが2Dに効かない理由)
  • Light 2Dの4タイプ(Global・Point・Freeform・Sprite)の使い分け
  • Global Lightで暗くして、Point Lightで明かりを足す 設計
  • Shadow Caster 2D でスプライトに影を落とす
  • 実践:暗い洞窟+プレイヤーが持つ追従松明

動作確認環境: Unity 2022.3 LTS / Unity 6(URP必須)

Sponsored

まずURPの2D Rendererに切り替える

2DのLight 2Dは、 URP(Universal Render Pipeline)の「2D Renderer」専用の機能 です。標準のBuilt-in Render Pipelineや、URPでも3D用のRendererのままでは使えません。3D用のDirectional Light / Point Lightが2Dスプライトを照らさないのは、スプライトの描画がそれらのライトを参照しない仕組みだからです。

2Dライティングのセットアップの流れ。URPをインストールし、2D Renderer Dataを作り、URP Assetに割り当て、GraphicsとQualityのRender PipelineにそのURP Assetを設定する4ステップ
  1. Package Managerで Universal RP をインストール
  2. Create > Rendering > URP Universal Renderer ではなく、Create > Rendering > 2D RendererRenderer 2D)を作成する
  3. URP Asset を作成し、その Renderer List に手順2の2D Rendererを割り当てる
  4. Project Settings > Graphics(および Quality)の Render Pipeline に、このURP Assetを設定する

これで、シーンにLight 2Dを置くとスプライトが照らされるようになります。既存プロジェクトを途中でURPへ移行すると、マテリアルがピンク(シェーダー非対応)になることがあります。その場合は Edit > Rendering > Materials > Convert... でURP用に変換してください。

補足: 新規プロジェクトなら、テンプレート選択で最初から 「2D (URP)」 を選ぶと、ここまでの設定が済んだ状態で始められます。まずはこれが一番ラクです。

Light 2Dの4タイプ

2Dのライトは、Light 2D コンポーネント1つで、 Light Type を切り替えて使います。用途に応じて4タイプを使い分けます。

Light 2Dの4タイプ比較図。Globalは画面全体を均一に照らす環境光、Pointは点から円状に広がる光、Freeformは自由な多角形の形の光、Spriteはスプライトの形をした光として、それぞれの照らし方の違いを示す
Light Type役割・使いどころ
Global画面 全体 を均一に照らす環境光。シーンの「地の明るさ」を決める。まず1つ置く
Point一点から 円状 に広がる光。松明・ランプ・電球など。内側/外側の半径と角度を持てる
Freeform自由な 多角形 の形に光る。窓から差し込む光や、板状のネオンなど
Sprite指定した スプライトの形 に光る。ロゴ型の看板や、複雑な形の光源に

Light 2D の主な設定は、 Color(光の色)・ Intensity(強さ)・ Radius(Pointの内外半径)・ Target Sorting Layers(どのSorting Layerを照らすか)です。Target Sorting Layersで「背景は照らすが、手前のエフェクト用レイヤーは照らさない」といった、 スプライトのレイヤー単位 の制御ができます(Screen Space OverlayのuGUIはそもそもLight 2Dの対象外です。おまけ参照)。

Global+Pointの2段構えで設計する

2Dライティングでいちばん効くのは、 「まず全体を暗く沈めて、そこに明かりを足す」 という2段構えの設計です。

Global+Pointの2段構え図。左はGlobal Lightだけで画面全体がぼんやり暗い状態、右はそこにPoint Lightを足して松明の周りだけ明るく照らされ、暗闇と明かりのコントラストが生まれた状態
  1. Global Light 2Dを1つ置き、Intensityを低め(例: 0.1〜0.3)にする。これで画面全体が暗く沈み、「夜」や「洞窟の中」の空気になる
  2. そこに Point Light 2D を置いて、松明やランプの周りだけを明るくする。暗闇の中に光の島が生まれ、プレイヤーの視線が自然に誘導される

この「暗さの底上げ → 明かりの追加」の順で考えると、ライティングの設計がぐっと楽になります。最初からPointだけを置くと、光の当たらない場所が真っ黒(Globalが無いと0の明るさ)になり、調整が難しくなります。Global Lightの明るさが、そのシーンの「一番暗い場所の明るさ」を決めていると考えてください。

色でムードを作る: Global Lightをわずかに青くすると夜、オレンジにすると夕暮れ。Point Lightを暖色にすると、松明の温かみが暗い背景に映えます。色の対比(寒色の闇+暖色の光)は雰囲気作りの定番です。

Sponsored

Shadow Caster 2Dで影を落とす

光があれば、影も落としたくなります。2Dでは Shadow Caster 2D コンポーネントで、スプライトに影を作れます。

Shadow Caster 2Dの図。壁のスプライトにShadow Caster 2Dを付けると、Point Lightから見て壁の反対側に影が伸びる。光源の位置に応じて影の向きと長さが変わる様子を示す
  1. 影を 落とす側 のオブジェクト(壁・柱・キャラなど)に Shadow Caster 2D を追加する。影の形(Shape)はスプライトの輪郭に合わせて設定する
  2. 影を 作る光源側 のLight 2Dで、 Shadows(Shadow Intensity)を有効 にする(0だと影は出ない)

これで、Point Lightから見てオブジェクトの反対側に影が伸びます。光源が動けば影の向きも変わるので、松明を持って歩くと壁の影がゆらゆら動く——といった演出ができます。複数のスプライトをまとめて1つの影として扱いたいときは、 Composite Shadow Caster 2D を親に付けます。

影は重いことも: Shadow Caster 2Dは見栄えする一方で、数が多いと負荷になります。「影が本当に効くオブジェクト」(プレイヤーの近くの壁など)だけに絞るのがコツです。

実践:松明を持つプレイヤー

暗い洞窟を松明を持って探索する——2Dアクションやローグライク、ホラーで定番の画作りを組んでみましょう。メトロイドヴァニアの暗い区画、見下ろし型ダンジョンRPGの視界制限、探索ホラーの手持ちランタン——どれも同じ仕組みで作れます。

実践の完成イメージ図。暗い洞窟の中でプレイヤーキャラが松明を持ち、その周りだけがPoint Lightで円状に照らされる。壁にはShadow Caster 2Dで影が落ち、プレイヤーの移動に光の円がついてくる様子

設計はシンプルです。 Global Lightで洞窟全体を暗く沈め、プレイヤーの子オブジェクトにPoint Lightを付けて「持ち歩く光」にする だけ。Point Lightはプレイヤーの子にしておけば、移動に合わせて自動でついてきます。

using UnityEngine;
using UnityEngine.Rendering.Universal;  // Light2D を使うために必要

// プレイヤーの子に付けた松明の光をゆらめかせる
public class TorchFlicker : MonoBehaviour
{
    [SerializeField] private Light2D torchLight;
    [SerializeField] private float baseIntensity = 1.0f;
    [SerializeField] private float flickerAmount = 0.15f;
    [SerializeField] private float flickerSpeed = 8f;

    void Update()
    {
        // Perlinノイズで自然な「ゆらぎ」を作る
        float noise = Mathf.PerlinNoise(Time.time * flickerSpeed, 0f);
        torchLight.intensity = baseIntensity + (noise - 0.5f) * 2f * flickerAmount;
    }
}

ポイントは2つです。 「光源をプレイヤーの子にする」(Transformが親に追従するので、移動コードを書かなくても光がついてくる)と、 「Intensityを揺らして命を吹き込む」Mathf.PerlinNoise で滑らかにゆらすと、炎特有のちらつきになる。ランダムな値をそのまま使うとカクつくので、ノイズや補間を使うのがコツ)。あとは壁に Shadow Caster 2D を付ければ、松明の動きに合わせて影も動き、洞窟探索の緊張感が一気に高まります。

おまけ:先に知っておくと良いこと

  • スプライトに凹凸の陰影を付けたい: スプライトに 法線マップ(Normal Map) を割り当てると、平面のスプライトでも光の向きに応じた立体的な陰影が出ます。Light 2Dの Blend Style と、スプライトのSecondary Textureで設定します。石壁やレンガの質感が一気に上がります。
  • uGUIは暗くならない(対象外): Screen Space OverlayのuGUI(HPバーやメニュー)は Light 2Dの影響を受けません。シーンを暗くしてもUIはそのまま表示されるので安心してください。暗くなって困るのは スプライトで作った演出やパーティクル の方で、こちらは専用のSorting Layerに載せて Target Sorting Layers から外せば、常に明るく保てます。
  • 光が四角く切れる・タイルの継ぎ目が光る: Tilemap にライトを当てるときは、タイルスプライトの設定(Filter Mode / パディング)を見直すと改善することがあります。
  • URPのバージョン差に注意: Renderer 2D や各設定の名称・場所はURPのバージョンで少しずつ変わります。この記事はUnity 6 / 2022.3 LTS基準です。公式マニュアルで自分のバージョンを確認してください。

まとめ

  • 2DのLight 2Dは URPの2D Renderer専用。3D用の標準ライトは2Dスプライトを照らさない
  • Light 2Dは Global・Point・Freeform・Sprite の4タイプ。まずGlobalで地の明るさを決める
  • Global Lightで暗くして、Point Lightで明かりを足す 2段構えが設計の基本
  • Shadow Caster 2D(+光源側のShadow有効化)でスプライトに影を落とす
  • 実践:Global Lightで暗くした洞窟に、プレイヤーの子にしたPoint Light(松明)を持たせ、Intensityをゆらす

まずは新規プロジェクトを 「2D (URP)」 テンプレートで作り、Global Lightを1つ置いてIntensityを下げ、そこにPoint Lightを1つ足してみてください。画面がぐっとドラマチックになるはずです。あなたの2Dゲームは、どんな光と影で彩りますか?

さらに学ぶために