UnityでFPSをつくる その10-5 [ シーン遷移 ]
今回はタイトルシーンを作り、メインシーンへと遷移するようにします。

ProjectウィンドウのScenesフォルダへ、新規にSceneを作り、「TitleScene」にリネームしてください。

TitleSceneに切り替え、HierarchyウィンドウからMainCameraを選択。

Cameraコンポーネントの「ClearFlags」を「SolidColor」へ変更、「Background」を黒にします。

次に、以下の画像を右クリックで名前を付けて保存を選択。

ProjectウィンドウのImagesフォルダを選択、右クリックでImportNewAssetを選択、保存した画像「TitleImage」を選択して、Importします。

「TitleImage」を選択した状態のまま、InspectorウィンドウからTextureTypeをSprite(2D and UI)へ変更して、Applyで適用します。

Hierarchyウィンドウへ「TitleImage」をD&Dして、Transformの値を以下のようにします。

この「TitleImage」をライトで照らす演出を加えたいのですが、現状のままではライトの影響を受けません。

そこで、SpriteRendererコンポーネントのMaterialを変更して、ライトの影響を受けるようにします。
まずは、ProjectウィンドウのMaterialsフォルダ内に新規でMaterialを作成し、「Sprites-Diffuse」にリネームします。

「Sprites-Diffuse」を選択した状態のまま、InspectorウィンドウからShaderのタイプをSprites/Diffuseに変更します。

このMaterialを「TitleImage」に適用します。
Hierarchyウィンドウから「TitleImage」オブジェクトを選択し、SpriteRendererコンポーネントのMaterialに「Sprites-Diffuse」を選択してください。

これで「TitleImage」オブジェクトが、ライトの影響を受けるようになります。

次に、ライトの設定をしていきます。
HierarchyウィンドウからDirectional Lightを選択、「Point Light」にリネームしてください。
続いて、Inspectorウィンドウから各コンポーネントの項目を、以下のように変更します。

ライトに照らされる表現が完成しました。

今回選択したライトの種類「Point」は、電球のイメージで、ライトの原点へ近づけば近づくほど周囲のオブジェクトが強い光に照らされます。
Rangeに設定した数値が、球形で表示された光の届く範囲。

Intensityが、ライトの原点から発せられる光の強さです。

次に、STARTキーの入力を促すテキストを追加します。
HierarchyウィンドウにTextオブジェクトを追加し、「PressStart」にリネームします。

Inspectorウィンドウから各コンポーネントの項目を、以下のように変更します。


STARTキーが入力されたらフェードアウトするように見せる為、UIにImageオブジェクトを追加し、「FadeBoard」にリネームします。

ゲーム実行時の画面解像度(1920×1080)にFadeBoardのWidthとHeightを合わせて、Colorを黒色で透明にします。

Unityでポストプロセスを使うには「PostProcessing」というライブラリ(汎用性の高い複数のプログラムを再利用可能な形にまとめたもの)をインストールします。
メニューバーの「Window」から「Package Manager」を選択、

Package Managerウィンドウが開くので「Post Processing」を選択してInstallボタンを押します。

Installが完了するとチェックマークが付きます。

これでPostProcessingが使えるようになりました、ウィンドウは閉じてしまって大丈夫です。
PostProcessingのエフェクトは、Post-process Layerがアタッチされたカメラに対して作用します。
今回はUI(PressStart)とSprite(TitleImage)両方にエフェクトをかけたいのですが、UIはデフォルトではスクリーンに直接描画される方式(Screen Space – Overlay)でカメラを経由していない為、カメラを経由する描画方式(Screen Space – Camera)に変更します。

HierarchyウィンドウからCanvasを選択して、CanvasコンポーネントのRender Modeを「Screen Space – Camera」に、Render Cameraを「Main Camera」にします。

次に、カメラ側の設定をします。
HierarchyウィンドウからMain Cameraを選択して、Add ComponentでRendering → Post-process Layer を追加してください。

追加したコンポーネントのLayer項目で、対象となるレイヤーを新規作成します。
タグを追加した時と同様に、今回はLayerのコンボボックスをクリックして、Add Layerを選択します。

User Layer 8 の欄に「PostProcess」と入力してください。

HierarchyウィンドウでMain Cameraを選択し、Post Process LayerコンポーネントのLayer項目を「PostProcess」に変更します。

次に、エフェクトの種類や度合いを決める「Post-process Volume」を作成します。
Hierarchyウィンドウから、3D Object → Post-process Volume を選択してください。

MainカメラにアタッチしたPost-process Layerコンポーネントの対象になるよう、Layerを「PostProcess」に変更します。

Post-process VolumeコンポーネントのIs Globalにチェックを入れて、ProfileのNewボタンを押します。

Is Globalにチェックを入れない場合は、カメラの原点がBox Colliderの範囲内の場合のみエフェクトが適用されます。

チェックを入れた場合は、カメラの原点がBox Colliderの範囲内外に関係なくエフェクトが適用されます。

Newボタンを押して新規に作られたPost-process Volume Profileが設定ファイルとなり、どういった種類のエフェクトがかかるのか決まります。
今回は光の滲(にじ)みを表現する為に、「Bloom」というエフェクトを使用します。
Post-process VolumeのInspectorからAdd effect → Unity → Bloom を選択してください。

追加されたBloomの項目Intensityにチェックを入れ、値を「20」にします。

Post-process LayerにPost-process Volumeの設定が反映され、カメラに映ったシーンにBloomエフェクトがかかりました。

長くなってきたので続きは次回にしたいと思います、おつかれさまでした!