void GetDirection()
    {
        float directionX = touchEndPos.x - touchStartPos.x;
        float directionY = touchEndPos.y - touchStartPos.y;


        if (Mathf.Abs(directionY) < Mathf.Abs(directionX))
        {
            if (30 < directionX)
            {
                //右向きにフリック
                flickDir = FLICK_DIR.RIGHT;
            }
            else if (-30 > directionX)
            {
                //左向きにフリック
                flickDir = FLICK_DIR.LEFT;
            }
        }
        else if (Mathf.Abs(directionX) < Mathf.Abs(directionY))
        {
            if (30 < directionY)
            {
                //上向きにフリック
                flickDir = FLICK_DIR.UP;
            }
            else if (-30 > directionY)
            {
                //下向きのフリック
                flickDir = FLICK_DIR.DOWN;
            }
        }
    }
    void MoveStraigt()
    {
        transform.DOJump(new Vector3(transform.position.x, 0, 0), 1.2f, 1, operationInterval).SetEase(Ease.Linear);//jumpアニメーション

        Vector3 newPos = new Vector3(stage.transform.position.x, stage.transform.position.y, stage.transform.position.z + 1);

        stage.transform.DOMove(newPos, operationInterval);

        UIController.GetComponent <UIController>().IncreaseDist();
        audio.PlayOneShot(jumpSound);

        flickDir = FLICK_DIR.IDOL;
        OpeHist.Push(STRIGHT);
    }
    void MoveRight()
    {
        transform.DOJump(new Vector3(transform.position.x + 1.0f, 0, 0), 1.2f, 1, operationInterval).SetEase(Ease.Linear);//jumpアニメーションしながら移動

        //stageを動かしplayerが動いているかのように見せる
        Vector3 newPos = new Vector3(stage.transform.position.x, stage.transform.position.y, stage.transform.position.z + 1);

        stage.transform.DOMove(newPos, operationInterval);

        UIController.GetComponent <UIController>().IncreaseDist();
        audio.PlayOneShot(jumpSound);

        //行動履歴に追加
        flickDir = FLICK_DIR.IDOL;
        OpeHist.Push(LEFT);
    }
    //後戻り機能ありの操作方法
    void Move()
    {
        Flick();
        time += Time.deltaTime;//連続操作できないようにする
        if (time > operationInterval)
        {
            if (Input.GetKeyDown(KeyCode.RightArrow) || flickDir == FLICK_DIR.RIGHT)
            {
                //右のブロックにいるときは右に移動せず前に移動する
                if (transform.position.x < 0.6f)
                {
                    MoveRight();
                }
                else
                {
                    MoveStraigt();
                }
                time = 0f;
            }
            else if (Input.GetKeyDown(KeyCode.LeftArrow) || flickDir == FLICK_DIR.LEFT)
            {
                //左のブロックにいるときは左に移動せず前に移動する
                if (transform.position.x > -0.4f)
                {
                    MoveLeft();
                }
                else
                {
                    MoveStraigt();
                }

                time = 0f;
            }
            else if (Input.GetKeyDown(KeyCode.DownArrow) || flickDir == FLICK_DIR.DOWN)
            {
                MoveStraigt();
                time = 0f;
            }
            else if (Input.GetKeyDown(KeyCode.UpArrow) || flickDir == FLICK_DIR.UP) //行動の巻き戻し
            {
                var opeNum = OpeHist.Pop();                                         //最後の行動履歴を削除

                if (opeNum == LEFT)
                {
                    transform.DOJump(new Vector3(transform.position.x - 1.0f, 0, 0), 1.2f, 1, operationInterval).SetEase(Ease.Linear);//jumpアニメーション
                    audio.PlayOneShot(jumpSound);

                    Vector3 newPos = new Vector3(stage.transform.position.x, stage.transform.position.y, stage.transform.position.z - 1);
                    stage.transform.DOMove(newPos, operationInterval);
                    time = 0f;
                }
                else if (opeNum == RIGHT)
                {
                    transform.DOJump(new Vector3(transform.position.x + 1.0f, 0, 0), 1.2f, 1, operationInterval).SetEase(Ease.Linear);//jumpアニメーション
                    audio.PlayOneShot(jumpSound);

                    Vector3 newPos = new Vector3(stage.transform.position.x, stage.transform.position.y, stage.transform.position.z - 1);
                    stage.transform.DOMove(newPos, operationInterval);
                    time = 0f;
                }
                else if (opeNum == STRIGHT)
                {
                    transform.DOJump(new Vector3(transform.position.x, 0, 0), 1.2f, 1, operationInterval).SetEase(Ease.Linear);//jumpアニメーション
                    audio.PlayOneShot(jumpSound);

                    Vector3 newPos = new Vector3(stage.transform.position.x, stage.transform.position.y, stage.transform.position.z - 1);
                    stage.transform.DOMove(newPos, operationInterval);
                    time = 0f;
                }

                flickDir = FLICK_DIR.IDOL;
                UIController.GetComponent <UIController>().DecreaseDist();
            }
        }
    }