(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]

Unity公式の2D用のライト Light2D【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2019.2.0f1


はじめに

以前にUnityの3D用ライトを2Dで使う方法や、

f:id:kan_kikuchi:20170816184902j:plain


2Dで光や影の表現をするためのアセットを紹介しました。

f:id:kan_kikuchi:20170816124630g:plain


これらはUnityで2D用のライトが存在しないからこその話だったのですが、

なんとついにUnity公式の2D用のライトであるLight2Dが登場しました。


という事で今回は、そのUnityの2D用ライトを実際に試してみた感じの記事です。

イメージとしては以下のような感じで、使い勝手も良く、表現力もかなり高そうでした。

f:id:kan_kikuchi:20190815111624g:plain


ちなみに、この機能はUnity2019.2以降で使えますが、現状Experimental(実験的)な機能なので、

今後大きく仕様が変わる可能性もある点には注意が必要です。

(個人的には実用にはまだちょっと早いと思っています。)


なお、記事中の画像は以下のアセットを使っております。





導入

2D用ライトを使うにはまず、

PackageManagerでLightweight RP(LWRP)をプロジェクトにインストールします。

f:id:kan_kikuchi:20190814093613j:plain
f:id:kan_kikuchi:20190814093636j:plain


ちなみにPackageManagerについては以下の記事を、



LWRP(やSRP)については以下の記事を参照の事。



LWRPのインストールが完了したら、ProjectのCerateから

Pipeline Assetと2D Rendererを作成します。

f:id:kan_kikuchi:20190814094405j:plain
f:id:kan_kikuchi:20190814094412j:plain


さらに作成したPipeline AssetのRenderer TypeをCustomに変更し、

Dataに同じ作成した2D Rendererを入れます。

f:id:kan_kikuchi:20190814094422j:plain


その後、Edit/ProjectSettingsのGraphicsでPipeline Assetを設定すれば準備完了です。

f:id:kan_kikuchi:20190814094543j:plain
f:id:kan_kikuchi:20190814094615j:plain


これでHierarchyのCreateから2Dのライトが作れるようになります。

f:id:kan_kikuchi:20190814094651j:plain


なお、3Dのライト同様、2Dのライトも生成後に種類の変更が可能です。

f:id:kan_kikuchi:20190814095331j:plain


ちなみにSprite RendererのMaterialが初期状態のSprite-Defaultでは2Dのライトは影響しません。


ただ、上記の設定後に生成したSprite RendererのMaterialは、

デフォルトでSprite-Lit-Defaultという2Dライトが影響するMaterialになるので、

f:id:kan_kikuchi:20190814095320j:plain


設定前に生成したSprite Rendererのみ気にすれば大丈夫です。


2Dライトの種類

一応2Dライトの種類についても軽く紹介しておきます。


Freeform Light 2Dは形を自由に変更出来るライトです。

f:id:kan_kikuchi:20190814100928g:plain


Sprite Light 2Dはライトを指定した画像の形に出来るライトです。

f:id:kan_kikuchi:20190814101208g:plain


Parametric Light 2Dを三角や四角など、ライトの角の数を指定出来るライトです。

f:id:kan_kikuchi:20190815103039g:plain


Point Light 2Dは一部を明るくするようなライトです。

f:id:kan_kikuchi:20190815103301g:plain


Global Light 2Dは全体を明るくするようなライトです。

f:id:kan_kikuchi:20190815104431g:plain


なお、プログラムで操作したい場合は以下のように

using UnityEngine.Experimental.Rendering.LWRPが必要になります。

using UnityEngine;
using UnityEngine.Experimental.Rendering.LWRP;//Light2Dを使うのに必要

public class NewBehaviourScript : MonoBehaviour {

  //2D用ライト
  public Light2D PointLight;
  
  private void Start() {
    //ライトの明るさを設定
    PointLight.intensity = 1;
  }

}