IEnumerator MoveArea1ToEx()
    {
        //ポーズや、プレイヤーの操作などを不可能にする
        //

        OnCanShiftOperation(false);
        mPause.canPause = false;
        CanInputPlayer(false);
        CanMovePlayer(false);
        CanJumpPlayer(false);



        //行き先のエリアのドアを、開かせる
        mExToArea1Door.mOpenForce = true;
        mEnterUI.StopAnimation();

        //
        //フェード
        //

        mFade.FadeInStart(1.0f);

        while (true)
        {
            if (mFade.IsFadeIn() == false)
            {
                break;
            }
            yield return(null);
        }

        //行き先のエリアのプレートを点灯
        SetEnterColor(21);

        //プレイヤーの位置を変更
        Goal    g = mExToArea1Door;
        Vector3 lNewPlayerPosition = g.transform.position;

        lNewPlayerPosition        += g.transform.rotation * Vector3.up * 1.0f;
        lNewPlayerPosition.z       = 0.0f;
        mPlayer.transform.position = lNewPlayerPosition;

        //カメラの位置を変更
        mCameraMove.transform.position = mStageSelectScroll.mAreaCameraPosition[3].transform.position;


        mFade.FadeOutStart(1.0f);

        while (true)
        {
            if (mFade.IsFadeOut() == false)
            {
                break;
            }
            yield return(null);
        }


        //ポーズや、プレイヤーの操作などを可能にする
        //

        OnCanShiftOperation(true);
        mPause.canPause = true;
        CanInputPlayer(true);
        CanMovePlayer(true);
        CanJumpPlayer(true);
    }
Example #2
0
    IEnumerator OpeningCoroutine()
    {
        //
        //初期化
        //

        Player lPlayer = FindObjectOfType <Player>();

        //プレイヤーコンポーネントを切る
        lPlayer.enabled = false;

        //プレイヤーのモデルが少しだけこちらを向いているのを戻す
        lPlayer.CameraLookRatio = 0.0f;
        lPlayer.LookCamera();

        //プレイヤーの見た目の重さを0にする
        lPlayer.GetComponent <WeightManager>().WeightLvSeem = WeightManager.Weight.flying;

        //プレイヤーのアニメーションを止める
        lPlayer.GetComponent <PlayerAnimation>().StartNone();

        //BGMの再生
        SoundManager.SPlay(mBGMPrefab);


        //フェードイン
        //

        //黒フェードでフェードイン
        mSceneFade.FadeOutStart();

        //フェードインが終わるまで待機
        while (true)
        {
            if (mSceneFade.IsFadeOut() == false)
            {
                break;
            }
            yield return(null);
        }


        //待機
        yield return(new WaitForSeconds(1.0f));


        //
        //プレイヤーが起動する
        //

        //プレイヤーの見た目の重さを1にする
        FindObjectOfType <Player>().GetComponent <WeightManager>().WeightLvSeem = WeightManager.Weight.light;

        //プレイヤーの起動音の再生
        SoundManager.SPlay(mAwakeSEPrefab);

        //プレイヤーのアニメーションを再生
        lPlayer.GetComponent <PlayerAnimation>().ChangeState(PlayerAnimation.CState.cStandBy);

        //待機
        yield return(new WaitForSeconds(3.0f));


        //
        //カメラのズームを戻す
        //

        //カメラの目標地点の設定
        mCamera.GetComponent <OpeningCameraMove>().mTarget = mCameraZoomOutPosition.transform.position;
        mCamera.GetComponent <OpeningCameraMove>().mSpeed  = 10.0f;
        mCamera.GetComponent <OpeningCameraMove>().mIsMove = true;

        //カメラが移動完了するまで待つ
        while (true)
        {
            if (mCamera.GetComponent <OpeningCameraMove>().IsReach)
            {
                break;
            }
            yield return(null);
        }


        //
        //カプセルを開く
        //

        //カプセルを開く
        mCapsuleAnimator.SetBool("IsOpen", true);

        //カプセルが開く音の再生
        SoundManager.SPlay(mOpenSEPrefab);

        //待機
        yield return(new WaitForSeconds(3.0f));


        //
        //プレイヤーが歩き出す
        //
        const float cWalkSpeed = 2.0f;


        //歩くアニメーションの再生
        lPlayer.GetComponent <PlayerAnimation>().SetSpeed(0.5f * cWalkSpeed);
        lPlayer.GetComponent <PlayerAnimation>().ChangeState(PlayerAnimation.CState.cWalk);

        //歩く処理
        float lTime = 0.0f;

        while (true)
        {
            lPlayer.transform.position += Vector3.right * Time.deltaTime * cWalkSpeed;

            lTime += Time.deltaTime;
            if (lTime >= 1.5f)
            {
                break;                  //終了
            }
            yield return(null);
        }

        //歩くアニメーションを止める
        lPlayer.GetComponent <PlayerAnimation>().ChangeState(PlayerAnimation.CState.cStandBy);

        //待機
        yield return(new WaitForSeconds(1.0f));


        //
        //あたりを見回す
        //

        //見回すアニメーションの再生
        lPlayer.GetComponent <PlayerAnimation>().StartFind();

        //待機
        yield return(new WaitForSeconds(1.5f));


        //
        //脱出マークを見つけて驚く処理
        //

        //驚く音の再生
        SoundManager.SPlay(mSurpriseSEPrefab);

        //驚くアイコンの表示
        mSurpriseIcon.SetActive(true);

        //驚いている間、待機
        yield return(new WaitForSeconds(2.5f));

        //驚くアイコンの表示
        mSurpriseIcon.SetActive(false);

        //驚き終わった後の待機
        yield return(new WaitForSeconds(0.5f));


        //
        //画面外まで歩いていく
        //

        //歩くアニメーションの再生
        lPlayer.GetComponent <PlayerAnimation>().ChangeState(PlayerAnimation.CState.cWalk);

        //歩く処理
        lTime = 0.0f;
        while (true)
        {
            lPlayer.transform.position += Vector3.right * Time.deltaTime * cWalkSpeed;

            lTime += Time.deltaTime;
            if (lTime >= 4.5f)
            {
                break;                  //終了
            }
            yield return(null);
        }

        //画面外に出た後の待機
        yield return(new WaitForSeconds(0.5f));


        //フェードアウト
        //

        //ドアフェードで、フェードアウト
        mStageTransition.CloseDoorParent();

        //フェードインが終わるまで待機
        while (true)
        {
            if (mStageTransition.GetCloseEnd() == true)
            {
                break;
            }
            yield return(null);
        }


        //チュートリアルへシーン遷移
        yield return(UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Tutorial-1"));

        yield return(null);
    }