예제 #1
0
    void Update()
    {
        if (blockFall.fallState == BlockFall.FallState.FREEFALL)
        {
            switch (moveState)
            {
                #region 無移動
            case MoveState.NONE:
                if (Input.GetKey(KeyCode.LeftArrow))
                {
                    //状態を左移動に
                    moveState = MoveState.LEFT;
                }

                if (Input.GetKey(KeyCode.RightArrow))
                {
                    //状態を右移動に
                    moveState = MoveState.RIGHT;
                }
                break;
                #endregion

                #region 左移動
            case MoveState.LEFT:
                //左移動
                LeftMove();

                //状態を連続左移動に
                moveState = MoveState.CONT_LEFT;
                break;
                #endregion

                #region  右移動
            case MoveState.RIGHT:
                RightMove();

                //状態を連続右移動に
                moveState = MoveState.CONT_RIGHT;
                break;
                #endregion

                #region 連続左移動
            case MoveState.CONT_LEFT:
                //連続移動になるまでの時間を計測
                contTime += UnityEngine.Time.deltaTime;

                //連続行動になるまでの時間になったら
                if (contTime >= CONT_TIME)
                {
                    //移動するまでの時間を計測
                    moveTime += UnityEngine.Time.deltaTime;

                    //移動するまでの時間になったら
                    if (moveTime >= MOVE_TIME)
                    {
                        //移動するまでの時間をリセット
                        moveTime = 0f;

                        //左移動
                        gameObject.transform.position -= ROW;

                        //移動先の中身が空では無かったら
                        if (!blockController.BlockFieldCheck())
                        {
                            //右移動で戻す
                            gameObject.transform.position += ROW;
                        }
                    }
                }

                if (!Input.GetKey(KeyCode.LeftArrow))
                {
                    //連続移動になるまでの時間をリセット
                    contTime = 0f;
                    //移動するまでの時間をリセット
                    moveTime = 0f;

                    //状態を無移動に
                    moveState = MoveState.NONE;
                }

                if (Input.GetKeyDown(KeyCode.RightArrow))
                {
                    //連続移動になるまでの時間をリセット
                    contTime = 0f;
                    //移動するまでの時間をリセット
                    moveTime = 0f;

                    //状態を右移動に
                    moveState = MoveState.RIGHT;
                }
                break;
                #endregion

                #region 連続右移動
            case MoveState.CONT_RIGHT:
                //連続移動になるまでの時間を計測
                contTime += UnityEngine.Time.deltaTime;

                //連続移動になるまでの時間になったら
                if (contTime >= CONT_TIME)
                {
                    //移動するまでの時間を計測
                    moveTime = 0f;

                    //移動するまでの時間になったら
                    if (moveTime >= MOVE_TIME)
                    {
                        //移動するまでの時間をリセット
                        moveTime = 0f;

                        //右移動
                        gameObject.transform.position += ROW;

                        //移動先の中身が空では無かったら
                        if (!blockController.BlockFieldCheck())
                        {
                            //左移動で戻す
                            gameObject.transform.position -= ROW;
                        }
                    }
                }

                if (!Input.GetKey(KeyCode.RightArrow))
                {
                    //連続移動になるまでの時間をリセット
                    contTime = 0f;
                    //移動するまでの時間をリセット
                    moveTime = 0f;

                    //状態を無移動に
                    moveState = MoveState.NONE;
                }

                if (Input.GetKeyDown(KeyCode.LeftArrow))
                {
                    //連続移動になるまでの時間をリセット
                    contTime = 0f;
                    //移動するまでの時間をリセット
                    moveTime = 0f;

                    //状態を右移動に
                    moveState = MoveState.RIGHT;
                }
                break;
                #endregion
            }

#if UNITY_EDITOR || UNIITY_IOS || UNITY_ANDROID
            if (touchController.leftMove && touchController.fastFall == false)
            {
                touchController.leftMove = false;

                //左移動
                LeftMove();
            }

            if (touchController.rightMove && touchController.fastFall == false)
            {
                touchController.rightMove = false;

                //右移動
                RightMove();
            }
#endif
        }
    }
예제 #2
0
    // Update is called once per frame
    void Update()
    {
        switch (fallState)
        {
            #region 自然落下
        case FallState.FREEFALL:
            //自然落下時間を計測
            freefallTime += UnityEngine.Time.deltaTime;

            //自然落下時間になったら
            if (freefallTime >= FREEFALL_TIME[gameController.stage])
            {
                //自然落下時間をリセット
                freefallTime = 0f;

                //下移動
                gameObject.transform.position -= COL;
                //移動先の中身が空ではなかったら
                if (!blockController.BlockFieldCheck())
                {
                    //上移動で戻す
                    gameObject.transform.position += COL;
                }
            }

            if (Input.GetKey(KeyCode.DownArrow))
            {
                //状態を高速落下に
                fallState = FallState.FAST_FALL;
            }
            break;
            #endregion

            #region 高速落下
        case FallState.FAST_FALL:
            //高速落下
            FastFall();

            break;
            #endregion

            #region 着地
        case FallState.LANDING:
            //配列に格納
            blockController.ArrayStore();

            //状態を停止に
            fallState = FallState.STOP;
            gameController.Create();
            break;
            #endregion

        case FallState.STOP:

            break;
        }

        //着地
        UpdateLanding();

        //状態がゲーム中では無かったら
        if (gameController.gameState != GameController.GameState.PLAY)
        {
            //状態を停止に
            fallState = FallState.STOP;
        }

#if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID
        //状態が落下中だったら
        if (fallState == FallState.FREEFALL || fallState == FallState.FAST_FALL)
        {
            if (touchController.fastFall)
            {
                //高速落下
                FastFall();

                touchController.nextFlick = false;
            }
        }
#endif
    }