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 } }
// 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 }