CodeZine(コードジン)

特集ページ一覧

速習 Unity 2Dゲーム開発
~第13回 シーンの移動処理

速習 Unity 2Dゲーム開発 第13回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/03/09 14:00
目次

画面移動時のエフェクト

 Scene間の移動はできましたが、画面が急に切り替わるので少し唐突な印象を受けます。最後に、画面をフェードアウトさせてからシーンを変更する処理を追加しましょう。

フェードアウト用のGameObjectを追加

 今回は既存の画像floorをフェードアウトに利用します。ProjectウィンドウのImagesフォルダのfloorをHierarchyウィンドウに追加し、名前をfadeOutに変更します。

 InspectorウィンドウのScaleの値を変更します。Xを50、Yを50にします。

画像のスケールを変更
画像のスケールを変更

透明度を変更する

 画面のフェードアウトはGameObjectの透明度を0(透明)から、だんだんと1(不透明)に近づけることで実現します。

 まずはGameObjectの透明度を0に変更します。InspectorウィンドウのColorプロパティの中央の白い長方形をクリックします。Colorウィンドウがポップアップするのでウィンドウ下、Aの値を0に変更します。値は透明が0で、不透明が255です。

透明度を0に
透明度を0に

プログラムを修正

 まずは以下の変数を用意します。

フェードアウト処理用
// フェードアウト制御用
private GameObject _fadeOut;

// クリアしたかどうか
private bool _clearFlag = false;

 フェードアウトするためのGameObjectを格納する変数と、クリアしたという状態を管理するフラグ変数を用意します。

 初期化時にGameObjectを取得します。

フェードアウト処理用
void Start () {
    this._animator = this.GetComponent<Animator>();

    this._isLeftMove = true;
    this._isJumping = false;
    this._isStop = true;

    // フェードアウト用のGameObjectを取得
    this._fadeOut = GameObject.Find("fadeOut");
}

 実際に必要になった際にGameObjectを取得しても構いませんが、何度も呼び出す処理なので使いまわせるようにStartメソッド時に取得しておきます。

 OnCollisionEnter2Dメソッド内でシーン切り替えしていた部分を、以下のようにフラグを変更する処理に書き替えます。

Scene変更処理をフラグ変更に置き換え
// 2面に移動(フェードアウト処理開始)
if (Application.loadedLevelName == "gameScene")
{
    this._clearFlag = true;
}

 Updateメソッドの末尾に以下のコードを追加します。

Updateメソッドの末尾に追加
var a = this._fadeOut.GetComponent<SpriteRenderer>().color.a;

if (this._clearFlag == true)
{
    if (a < 1f)
    {
        a += 0.01f;
        this._fadeOut.GetComponent<SpriteRenderer>().color = new Color(1, 1, 1, a);
    }
    else
    {
        Application.LoadLevel("gameScene002");
    }
}

 fadeOutの透明度をチェックして1f(不透明)以下ならさらに透明度を上げ、1fに達した場合にシーンを移動します。1fはfloat型の1という意味です。ここでは不透明な状態を意味します。

 デバッグ実行すると、ハムスターに触れた際に画面がフェードアウトした後、次のシーンに移動することが確認できます。

まとめ

 今回は複数のSceneを移動する方法を紹介しました。Sceneの変更はApplication.LoadLevelメソッドを用いましたが、Applicationクラスからはそれ以外にも色々な情報が取得できますので覚えておくと良いでしょう。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:速習 Unity 2Dゲーム開発

もっと読む

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5