シーン遷移せずにステージを切り替えるテクニック【Unity】

今回は、シーン遷移を行わずにステージを切り替える方法について紹介したいと思います。

本来新しいステージに移行させる場合は、ロードシーンを使い違うシーンを読み込むのが一般的な方法だと思いますが、1つのシーンでいかにもシーンが変わったかのように見せる方法があります。

このテクニックは、前回紹介したフェードアウトと今から実装するフェードインで実現します。

スポンサーリンク

シーン遷移を行わずにステージを切り替える方法

ステージ俯瞰図

これは、ゲームシーン全体を俯瞰から見たイメージです。

下にあるステージ1をクリアしたら、上にあるステージ2にフェードを上手く使って移動させるわけですね。

カメラはUnityちゃんを追いかけるようにしていますが、ステージ1をプレイ中にステージ2は映らないので、シーンチェンジしているように表現することが出来ます。

カメラコントローラスクリプトの修正

現状カメラとUnityちゃんの関係は、X座標しか連動していないので、Z座標の動きにも追従するように修正します。

カメラコントローラの修正

プレイヤーのz座標を利用しますが、カメラの角度が斜めから映しているので、そのまま「playerPos.z」にしてしまうと、綺麗にステージを映せないので、微調整しています。

フェードスクリプトの修正


次に、フェードに関するスクリプトを修正します。

ゲーム開始時や、フェードアウト後違うステージに移行した際にフェードイン演出を行います。

Unityちゃんを移動させるタイミングは、画面がフェードアウトしきって見えなくなったらでステージ2へ移動させます。また、そのタイミングで「ステージクリア」テキストも非表示にしましょう。

移動させる位置に関しては、ステージ2を配置したTerrainのポジションを確認しながら決めてください。

フェードを使ってステージを移動させる

どうでしょうか?フェードを使うだけで、シーンが切り替わってるように見えますよね。

フェードなしだとただのワープと同じですからね。あとテキストの影響も大きいと思います。

シーンが多くてごちゃごちゃしている場合は、是非活用してみてください。