Light2Dで始める ええ感じの雰囲気作り
もくじ ・自己紹介 ・Light2Dって? ・実演 ・まとめ
自己紹介 名前 ハム 職業 学生 Unity歴 だいたい2年半 最近作ってるゲーム
こんなゲーム オンボロサブマリン
はじめに 今回のターゲット層は2Dゲーム制作者 & Unity初心者
Light2Dって?? ・公式からの引用 URP に含まれている 2D ライティングシステムは、使いやすいアーティスト向けツールとランタイムコンポーネントのセットで構成されており、 スプ ライトレンダラー などの Unity のコアコンポーネントと、おなじみの 3D ライトコンポーネントの 2D 版である 2D ライトコンポーネントを使用して、ラ イティングされた 2D シーンをすばやく作成できます。 これらのツールは、 スプライトレンダラー 、タイルマップレンダラー 、スプライトシェイプレンダラー などの 2D レンダラーとシームレスに統合できる ように設計されています。このツールとコンポーネントのシステムは、モバイルシステムや、複数のプラットフォームでの実行に最適化されていま す。 ・つまり…? 2D空間上でも3Dのようにいい感じにライトを設定できる 素晴らしい機能です!!
Light2Dって?? ・分かりやすい動画様たち https://www.youtube.com/watch?v=Km_4NQPk59s https://www.youtube.com/watch?v=uap9ZCDC9X4
実演 ・実際にオンボロサブマリンで実演してみる
プロジェクトの作成 ・プロジェクトの作成 2DのURPを選択!! BuiltInだとLight2Dを使うために URPに変更する必要があるので プロジェクト作成時にURPに したほうが楽です
プロジェクトの作成 ・シーンの確認 ・Camera ・GlobalLight2D この2つがあればOK!
下準備 ・オブジェクトの配置 SpriteRendererコンポーネントを もったGameObjectを適当に 配置します。 ・BackGround ・Treasure ・Player の3種類のオブジェクトを 配置します。
下準備 ・SortingLayerの設定 各GameObjectのSortingLayerの 設定をおこないます。 新しく ・BackGround ・Object ・Player ・Effect*2 の5つを作成して、先ほど 作ったGameObjectに 設定していきます。
真っ暗に変更 ・Lightの設定 ①TargetSortingLayerを”All”に 変更する ②Intensityを0にする
真っ暗に変更 ・Lightの設定 GameSceneが真っ暗に なればOK!
プレイヤーを照らす ・SpotLight2Dの生成 Hierarchy上で右クリック Light→SpotLight2D を選んで生成してください。 右画像のようになっていたらOK!
プレイヤーを照らす ・SpotLight2Dの設定 Intensity:0.4 RadiusInner:1 RadiusOuter:3 TargetSortingLayer Effect以外のすべてを選択 してください
プレイヤーを照らす ・FreeformLight2Dの生成 右の図のようになっていればOK!
前面を照らす ・SpotLight2Dの設定 Hierarchy上で右クリック Light→Freeform2D→Square を選んで生成してください。 右画像のようになっていたらOK!
前面を照らす ・SpotLight2Dの設定 Scene上でライトの形を 右の台形のようにします。 InspectorのPositionでも 設定が出来ます!!
前面を照らす ・SpotLight2Dの設定 Intensity:0.4 Falloff:1.8 FalloffStrength:0.3 TargetSortingLayer Effect以外のすべてを選択 してください
前面を照らす ・FreeformLight2Dの生成 右の図のようになっていればOK!
お宝を照らす 現状だとお宝が暗いので お宝を照らすライトを作ります!!
お宝を照らす ・FreeformLight2Dの生成 先ほど作った前面を照らすライト をコピー&ペーストしましょう! Intensity:0.6 TargetSortingLayer Objectのみチェックを入れる
お宝を照らす ・FreeformLight2Dの生成 右の図のようになっていればOK!
おまけ 今回は下記のサイトを参考に シェーダーグラフで 潜水艦のライトの部分のみを 発光させてます! 【unity】ドット絵を発光させよ! Shader Grapでエミッションを導入する手引き | ゲームクリエイターズ・ラボラトリー (gamecreatorslabo.com)
おまけ /// <summary> /// ゲーム開始時にライトを点灯させる処理 /// </summary> public IEnumerator StartLightingUp() { for (var i = 0; i < 10; ++i) { aroundLight2D.intensity += startAroundLight2D * 0.1f; yield return new WaitForSeconds(0.05f); } for (var i = 0; i < 10; ++i) { frontLight2D.intensity += startFrontLight2D * 0.1f; treasureLight2D.intensity += startTreasureLight2D * 0.1f; yield return new WaitForSeconds(0.05f); } lightRadius = aroundLight2D.pointLightOuterRadius; yield return new WaitForSeconds(0.5f); } コルーチン・UniTask と組み合わせることで ちょっとずつ明るくさせる など動的にライトの明るさを 変えることも簡単にできます!!
まとめ Light2Dは2D空間上にライトを設置でき、 ゲームの雰囲気作りに凄く役立ちます!! また日本語の資料もかなり充実しているので ぜひみなさんもLight2Dに入門しましょう!! Thank you for listening !!!!