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(); } } }