シンプルなアクションゲームを作ってみようの第25回です。
今回はシーンにエフェクトを加えていきます。
前回はゲーム開始前のカウントダウン機能を作成しました。
シンプルなアクションゲームを作ってみようの他の記事は
シンプルなアクションゲームを作るのを通してUnityの使い方を学ぶカテゴリです。
から参照出来ます。
PostProcessingStackを使用する
今回はシーンにエフェクトを加える為にPostProcessingStackの機能を使います。
PostProcessingStackを使用するとシーンにエフェクトを加える事が出来ます。
PostProcessingStackのインストール
PostProcessingStackはPackage Managerからインストール必要があります。
UnityメニューのWindowからPackage Managerを選択します。
パッケージの種類をUnity RegistryにしPost Processingを選択してInstallボタンを押します。
Post Processing Volumeゲームオブジェクトの作成
Stage1シーンにPost Processing Volumeゲームオブジェクトを作成します。
Post Processing Volumeゲームオブジェクトを作成するとPost Processing Volumeコンポーネントを持つゲームオブジェクトが作られます。
Stage1シーンのヒエラルキーで右クリックから3D Object→Post Processing Volumeを選択します。
3D ObjectからPost Processing Volumeを選択して作成しなくても空のゲームオブジェクトを作成し、Box Colliderを取り付けてIs Triggerにチェックを入れ、Post-process Volumeコンポーネントを取り付ける事でも同じように出来ますが、あえてやる必要はありません。
出来たPost-process Volumeゲームオブジェクトを選択し、インスペクタを見るとPost-process VolumeコンポーネントでProfileを設定する項目があります。
ここにはどんなエフェクトを加えるかの設定ファイルを設定しますが、このコンポーネントから設定ファイルを作れるのでNewボタンを押します。
Newボタンを押すとAssets/シーン名/シーン名_ProfilesフォルダにPost-process Volume Profile.assetファイルが作成されます。
Post-process VolumeコンポーネントのNewボタンを押すと設定ファイルが作られProfileにそのファイルが設定されます。
設定ファイルにエフェクトを追加する
Assets/Stage1/Stage1_Profiles/Post-process Volume Profile.assetファイルを選択し、インスペクタでエフェクトの設定をしていきます。
Add effect…ボタンを押し、Unity→Depth Of Fieldを選択します。
Depth Of Fieldは焦点以外をぼかすエフェクトです。
Focus Distanceは焦点までの距離を設定します。
Apertureは絞りを設定します。
Focal Lengthはレンズとフィルムの距離を設定します。
Max Blur Sizeはぼかす最大半径を決定します。
ポストプロセスの影響範囲
Post-process VolumeゲームオブジェクトのPost-process Volumeに設定したエフェクトの効果の範囲はPost-process VolumeゲームオブジェクトのBox Colliderで検知する範囲になります。
Main Camera等のカメラにPost-process Layerコンポーネントを取り付けて、Layerでエフェクトを有効にするレイヤーを指定し、カメラのゲームオブジェクトがPost-process VolumeのBox Colliderの範囲に入った時にカメラにエフェクトを加えた映像を表示します。
しかし今回の場合はカメラがPost-process VolumeのBox Colliderの範囲内に入った時にエフェクトを加えるよりも最初からエフェクトを加えたいので、Post-process VolumeゲームオブジェクトのインスペクタでPost-process VolumeコンポーネントのIs Globalにチェックを入れて範囲関係なくエフェクトを有効にします。
Post Processingレイヤーの作成
Post Processing Volumeのエフェクトはレイヤーによって有効にするかどうか決定出来るので新たにPost Processingレイヤーを作成します。
レイヤーはインスペクタのLayerの部分を押して新しいレイヤー名を設定します。
Post-process VolumeゲームオブジェクトのインスペクタでPost Processingを設定します。
Main CameraにPost-process Layerコンポーネントの取り付け
このゲームではMain Camera一つでゲームの画面を映していますので、Main CameraにPost-process Layerコンポーネントを取り付けます。
Main CameraのインスペクタでAdd ComponentからRendering→Post-process Layerを選択し取り付けます。
Post-process LayerのLayerをPost Processingにします。
これでMain Cameraに映る映像にエフェクトを加えられるPost-process VolumeはPost Processingレイヤーが設定されているPost-process Volumeコンポーネントを持つゲームオブジェクトだけになります。
実行して確認してみる
機能が出来たので実行して確認してみましょう。
上のようになりました。
Post-process VolumeコンポーネントでDepth Of FieldのOnOffのボタンを切り替えるとエフェクトの効果の違いがわかりやすいです。
終わりに
今回はPost Processing Stackを使用してゲームのカメラの映像にエフェクトを加えました。
次回はシーン間の移動機能を作成していきます。