Exemplo n.º 1
0
    void Update()
    {
        // ゴールしていないなら何もしない
        if (!canGoal)
        {
            return;
        }
        // ゴールしたなら
        else
        {
            // チュートリアル以外なら
            if (Area.GetAreaNumber() != 0)
            {
                // リザルト画面が表示されているなら何もしない
                if (IsResultCanvasActive())
                {
                    if (resultAnimFlg)
                    {
                        ResultAnim();
                    }
                    else
                    {
                        if (alpha == 0.0f)
                        {
                            SoundManager.SPlay(ClearJingleSEPrefab);
                        }
                        alpha += 0.05f;
                        clearImage.GetComponent <UnityEngine.UI.Image>().color   = new Color(1.0f, 1.0f, 1.0f, alpha);
                        bgLightImage.GetComponent <UnityEngine.UI.Image>().color = new Color(1.0f, 1.0f, 1.0f, alpha);
                    }
                    return;
                }
                // リザルト画面が表示されていなければ
                else
                {
                    // ポーズ機能を無効に
                    GetComponent <Pause>().enabled = false;

                    // ステージクリア時のリザルト画面を表示
                    ResultCanvas.SetActive(true);
                    StartResultAnim();
                }
            }
            // チュートリアルなら
            else
            {
                if (!isStartCloseDoor)
                {
                    st.CloseDoorParent();
                    isStartCloseDoor = true;
                }

                if (st.GetCloseEnd())
                {
                    GetComponent <ChangeScene>().OnNextButtonDown();
                }
            }
        }
    }
Exemplo n.º 2
0
    public void OnNextButtonDown()
    {
        // ポーズを解除してシーン変更フラグを立てる
        if (pauseFlg)
        {
            pauseFlg = false;
        }
        GetComponent <Pause>().DisableGraphicRaycaster();
        GetComponent <Pause>().canPause = false;
        GetComponent <Result>().DisableGraphicRaycaster();
        changeSceneMode = CHANGE_SCENE_MODE.NEXT;

        // リザルト画面を消す

        /*if (result.IsResultCanvasActive()) {
         *  result.SetResultCanvasActive(false);
         *  result.canGoal = false;
         * }*/

        // チュートリアル以外なら
        if (Area.GetAreaNumber() != 0)
        {
            // ドア閉め演出
            st.CloseDoorParent();
        }
        // チュートリアルなら
        else
        {
            // 最終ステージでないなら
            if (Area.ExistNextStageSameArea(Area.GetAreaNumber(), Area.GetStageNumber()))
            {
                // 演出せず次のステージへ
                changeSceneFlg = true;
            }
            // チュートリアルの最終面なら
            else
            {
                // ステージセレクトへ飛ぶ
                changeSceneMode = CHANGE_SCENE_MODE.STAGESELECT;
                changeSceneFlg  = true;
            }
        }
    }
Exemplo n.º 3
0
    IEnumerator StageSelectMain()
    {
        //プレートの色を変える
        SetEnterColor(-1);

        LimitPlayDoorSE();

        //ステージ開始時の演出
        mTransition.OpenDoorParent();

        //演出が終了するまで待機
        while (true)
        {
            if (mTransition.GetOpenEnd())
            {
                break;
            }
            yield return(null);
        }


        //BGMを流し始める
        var t = SoundManager.SPlay(mStageSelectBGMPrefab);

        SoundManager.SFade(t, 0.0f, 1.0f, 2.0f);

        int lSelectStageNum = -1;

        //ゲームメインのループ
        while (true)
        {
            SetEnterColor(-1);

            bool lIsEnter = Input.GetKeyDown(KeyCode.W);

            //ゴール判定
            //
            for (int i = 0; i < mGoal.Count; i++)
            {
                if (CanEnter(mGoal[i]))
                {
                    SetEnterColor(i);

                    //もし入る操作が行われているなら
                    if (lIsEnter)
                    {
                        lSelectStageNum = i;
                        break;
                    }
                }
            }

            //ステージが選択されていたら
            if (lSelectStageNum != -1)
            {
                break;                  //遷移へ
            }

            yield return(null);                 //ゲームメインを続ける
        }

        //ステージ終了時の演出
        mTransition.CloseDoorParent();

        //演出が終了するまで待機
        while (true)
        {
            if (mTransition.GetCloseEnd())
            {
                break;
            }
            yield return(null);
        }

        //ステージ遷移
        UnityEngine.SceneManagement.SceneManager.LoadScene(Area.GetStageSceneName(1, lSelectStageNum + 1));
    }
Exemplo n.º 4
0
    //ステージセレクトのメインの更新
    //
    IEnumerator StageSelectMain()
    {
        OnCanShiftOperation(true);                  //重さを移せるようになる
        mStageSelectScroll.mIsScroll        = true; //スクロールが行えるようになる
        mStageSelectScroll.mCameraMoveSpeed = 50.0f;
        mPause.canPause = true;                     //ポーズが出来るようになる
        CanMovePlayer(true);
        CanJumpPlayer(true);


        int lSelectStageNum       = -1;
        int lBeforeSelectStageNum = -1;
        int lDecideSelectStageNum = -1;


        //メインのループ
        //
        while (true)
        {
            //ポーズ中ならカーソルを出す
            if (mPause.pauseFlg)
            {
                Cursor.visible = true;
            }
            else
            {
                Cursor.visible = false;
            }


            //現在いる場所のドアを開くのと、プレートを光らせるのの更新
            lSelectStageNum = mSelectStageNum;
            if (lSelectStageNum != lBeforeSelectStageNum)
            {
                if (CanEnterStage(lSelectStageNum))
                {
                    SetEnterColor(lSelectStageNum);
                    OpenDoor(lSelectStageNum, true);

                    mSelectInit = false;
                    mSelectTime = 0.0f;
                }
                else
                {
                    SetEnterColor(-1);
                }

                OpenDoor(lBeforeSelectStageNum, false);

                if (lBeforeSelectStageNum != -1)
                {
                    mEnterUI.StopAnimation();
                }
            }
            lBeforeSelectStageNum = lSelectStageNum;


            //入る為のキー操作のUI表示
            //
            mSelectTime += Time.deltaTime;
            if (mSelectTime >= 0.4f && !mSelectInit)
            {
                mSelectInit = true;

                if (lSelectStageNum != -1)
                {
                    Vector3 lUIPosition = mGoal[lSelectStageNum].transform.position;
                    lUIPosition += mGoal[lSelectStageNum].transform.rotation * Vector3.down * 2.0f;
                    mEnterUI.SetPosition(lUIPosition);
                    mEnterUI.SetRotation(mGoal[lSelectStageNum].transform.rotation);
                    mEnterUI.StartAnimation();
                }
            }


            bool lIsEnter = Input.GetKey(KeyCode.W);

            //ゴール判定
            //
            if (mSelectStageNum != -1)
            {
                //もし入る操作が行われているなら
                if (lIsEnter && CanGoal(mGoal[mSelectStageNum]) && CanEnterStage(mSelectStageNum) && Area.IsValidArea((mSelectStageNum / 5) + 1))
                {
                    lDecideSelectStageNum = mSelectStageNum;
                    break;
                }
            }

            bool lEnterDoor = false;

            //Exと行き来するドアを通ったかの判定
            if (mSelectArea1ToEx)
            {
                if (lIsEnter)
                {
                    yield return(MoveArea1ToEx());

                    lEnterDoor = true;
                }
            }

            lIsEnter = Input.GetKey(KeyCode.W);

            if (mSelectExToArea1)
            {
                if (lIsEnter)
                {
                    yield return(MoveExToArea1());

                    lEnterDoor = true;
                }
            }

            yield return(null);             //ゲームメインを続ける


            //Exエリアと行き来するドアを、開きっぱなしにしないようにする
            if (lEnterDoor == true)
            {
                mExToArea1Door.mOpenForce = false;
                mArea1ToExDoor.mOpenForce = false;
            }
        }


        //重さを移せないようにする
        OnCanShiftOperation(false);
        mPause.canPause = false;

        //プレイヤーが入力できないようにする
        CanInputPlayer(false);

        CanJumpPlayer(false);

        //プレイヤーの回転が終わるまで待つ
        while (true)
        {
            if (mPlayer.IsRotation == false)
            {
                break;
            }
            yield return(null);
        }


        //UIを消す
        mEnterUI.gameObject.SetActive(false);

        //ズーム終了後のカメラ位置を変更
        mCameraMove.mEndPosition = GetPlayerZoomCameraPosition(mGoal[lDecideSelectStageNum].transform.up.y <= 0.0f);


        //カメラの開始地点を現在のカメラ位置にする
        mCameraMove.mStartPosition = mCameraMove.transform.position;


        //プレイヤーをゴールの中心まで歩かせる
        Vector3 lGoalCenter = mGoal[lDecideSelectStageNum].transform.position;

        //左側にいるなら
        if (mPlayer.transform.position.x <= lGoalCenter.x)
        {
            //右に歩かせる
            VirtualController.SetAxis(VirtualController.CtrlCode.Horizontal, 1.0f, 30.0f);

            //ゴールの中心を超えたら、歩かせるのをやめる
            while (true)
            {
                if (mPlayer.transform.position.x >= lGoalCenter.x)
                {
                    Vector3 lPos = mPlayer.transform.position;
                    lPos.x = lGoalCenter.x;
                    mPlayer.transform.position = lPos;                      //補正
                    break;
                }
                yield return(null);
            }
        }
        //左側にいるなら
        else if (mPlayer.transform.position.x >= lGoalCenter.x)
        {
            //左に歩かせる
            VirtualController.SetAxis(VirtualController.CtrlCode.Horizontal, -1.0f, 30.0f);

            //ゴールの中心を超えたら、歩かせるのをやめる
            while (true)
            {
                if (mPlayer.transform.position.x <= lGoalCenter.x)
                {
                    Vector3 lPos = mPlayer.transform.position;
                    lPos.x = lGoalCenter.x;
                    mPlayer.transform.position = lPos;                      //補正
                    break;
                }
                yield return(null);
            }
        }

        mPlayer.GetComponent <MoveManager>().StopMoveHorizontalAll();
        VirtualController.SetAxis(VirtualController.CtrlCode.Horizontal, 0.0f, 30.0f);

        //プレイヤーの回転が終わるまで待つ
        while (true)
        {
            if (mPlayer.IsRotation == false)
            {
                break;
            }
            yield return(null);
        }


        //プレイヤーを移動不可にする
        CanMovePlayer(false);
        CanJumpPlayer(false);

        OnPlayerEffect(true);           //プレイヤーの更新を切る

        mPlayer.GetComponent <PlayerAnimation>().ChangeState(PlayerAnimation.CState.cStandBy);


        mStageSelectScroll.mIsScroll = false;


        //ステージセレクトでは、ズームインしない仕様にした

        /*
         * mCameraMove.MoveStart();
         *
         * //カメラのズームイン終了まで待つ
         * while (true) {
         *      if (mCameraMove.IsMoveEnd) {
         *              break;
         *      }
         *      yield return null;
         * }
         */


        Goal g = mGoal[lDecideSelectStageNum];

        //
        //プレイヤーがドアに入っていく演出
        //
        yield return(WalkEnterDoor(g));


        //ステージ終了時の演出
        mTransition.CloseDoorParent();

        //演出が終了するまで待機
        while (true)
        {
            if (mTransition.GetCloseEnd())
            {
                break;
            }
            yield return(null);
        }

        //ステージ遷移
        UnityEngine.SceneManagement.SceneManager.LoadScene(Area.GetStageSceneName((lDecideSelectStageNum / 5) + 1, (lDecideSelectStageNum % 5) + 1));
    }
Exemplo n.º 5
0
    void Update()
    {
        /*if (zoomInFlg) {
         *  oldZoomInFlg = zoomInFlg;
         *  Zoom(zoomInTime, ref zoomInFlg, cameraStartPoint, cameraZoomPoint);
         * }
         * else {
         *  if (oldZoomInFlg != zoomInFlg) {
         *      oldZoomInFlg = zoomInFlg;
         *      tutorial.SetActive(true);
         *      stageselect.SetActive(true);
         *  }
         * }*/

        // ズームイン中でなくて
        if (!zoomInFlg)
        {
            // 前フレームでもズームインしていなければ何もしない
            if (oldZoomInFlg == zoomInFlg)
            {
                return;
            }
            // 前フレームでズームインが終わったなら
            else
            {
                // モード選択のボタンをActiveにする
                oldZoomInFlg = zoomInFlg;
                tutorial.SetActive(true);
                stageselect.SetActive(true);
            }
        }
        // ズームイン中なら
        else
        {
            oldZoomInFlg = zoomInFlg;
            Zoom(zoomInTime, ref zoomInFlg, cameraStartPoint, cameraZoomPoint);
        }

        /*if (zoomOutFlg) {
         *  oldZoomOutFlg = zoomOutFlg;
         *  st.CloseDoorParent();
         *  Zoom(zoomOutTime, ref zoomOutFlg, cameraZoomPoint, cameraEndPoint);
         * }
         * else {
         *  if (oldZoomOutFlg != zoomOutFlg) {
         *      oldZoomOutFlg = zoomOutFlg;
         *  }
         * }*/

        // ズームアウト中でなくて
        if (!zoomOutFlg)
        {
            // 前フレームでもズームアウトしていなければ何もしない
            if (oldZoomOutFlg == zoomOutFlg)
            {
                return;
            }
            // 前フレームでズームアウトが終わったなら
            else
            {
                oldZoomOutFlg = zoomOutFlg;

                // ドア閉めの演出が終わったら
                if (st.GetCloseEnd())
                {
                    // ステージセレクトへ飛ぶ(仮)
                    cs.OnStageSelectButtonDown();
                }
            }
        }
        // ズームアウト中なら
        else
        {
            oldZoomOutFlg = zoomOutFlg;
            st.CloseDoorParent();
            Zoom(zoomOutTime, ref zoomOutFlg, cameraZoomPoint, cameraEndPoint);
        }

        // ズームインし終わっていたら何もしない
        if (firstZoom)
        {
            return;
        }
        // ズームされていない初期状態なら
        else
        {
            if (Input.anyKeyDown)
            {
                // 「InputAnyKey」の表示を消す
                text.SetActive(false);
                firstZoom     = true;
                zoomInFlg     = true;
                startZoomTime = Time.realtimeSinceStartup;
            }
        }
    }
Exemplo n.º 6
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);
    }