今回は、シーン遷移を行わずにステージを切り替える方法について紹介したいと思います。
本来新しいステージに移行させる場合は、ロードシーンを使い違うシーンを読み込むのが一般的な方法だと思いますが、1つのシーンでいかにもシーンが変わったかのように見せる方法があります。
このテクニックは、前回紹介したフェードアウトと今から実装するフェードインで実現します。
シーン遷移を行わずにステージを切り替える方法
これは、ゲームシーン全体を俯瞰から見たイメージです。
下にあるステージ1をクリアしたら、上にあるステージ2にフェードを上手く使って移動させるわけですね。
カメラはUnityちゃんを追いかけるようにしていますが、ステージ1をプレイ中にステージ2は映らないので、シーンチェンジしているように表現することが出来ます。
カメラコントローラスクリプトの修正
現状カメラとUnityちゃんの関係は、X座標しか連動していないので、Z座標の動きにも追従するように修正します。
プレイヤーのz座標を利用しますが、カメラの角度が斜めから映しているので、そのまま「playerPos.z」にしてしまうと、綺麗にステージを映せないので、微調整しています。
フェードスクリプトの修正
次に、フェードに関するスクリプトを修正します。
ゲーム開始時や、フェードアウト後違うステージに移行した際にフェードイン演出を行います。
Unityちゃんを移動させるタイミングは、画面がフェードアウトしきって見えなくなったらでステージ2へ移動させます。また、そのタイミングで「ステージクリア」テキストも非表示にしましょう。
移動させる位置に関しては、ステージ2を配置したTerrainのポジションを確認しながら決めてください。
どうでしょうか?フェードを使うだけで、シーンが切り替わってるように見えますよね。
フェードなしだとただのワープと同じですからね。あとテキストの影響も大きいと思います。
シーンが多くてごちゃごちゃしている場合は、是非活用してみてください。