private void Update() { if (gameState.GetGameState() == GameState.processing) { isSubmitFinish = false; } if (gameState.GetGameState() != GameState.Wait)//wait상태일때만 입력받음 { return; } if (isSubmitFinish) { return; } Touch touch = new Touch(); if (Input.touchCount > 0) { touch = Input.GetTouch(0); Ray ray = Camera.main.ScreenPointToRay(touch.position); RaycastHit2D hit = Physics2D.GetRayIntersection(ray, Mathf.Infinity, LayerMask.GetMask("Card")); //입력좌표에 카드있나 감지 if (hit && !isCardSelected) //있으면 { isCardSelected = true; cardObject = hit.collider.gameObject.GetComponentInParent <CardGameObject>(); cardTransform = hit.collider.gameObject.transform.parent; cardReturnPosition = cardTransform.position; } if (isCardSelected) //카드가 잡혀있고 마우스가 계속 눌려있다면 { cardTransform.position = (Vector2)Camera.main.ScreenToWorldPoint(touch.position); //마우스 따라 이동 } if (touch.phase == TouchPhase.Ended && isCardSelected) { if (touch.position.y > submitZoneYPixel) { player.SubmitCard(cardObject);//제출 isCardSelected = false; isSubmitFinish = true; } else { isCardSelected = false; cardTransform.position = cardReturnPosition;//원래자리로 백 } } } }
IEnumerator Timer() { yield return(new WaitUntil(() => gameState.GetGameState() == GameState.Wait));//gamestate가 wait가 되면 while (true) { sm.PlayWaitAudio(); float leftTime = GameStaticVariable.turnTime; while (true) { leftTime -= Time.deltaTime; leftTimeText.text = "Left Time : " + Mathf.Round(leftTime * 100) / 100; if (leftTime < 0)//시간이 끝남 { GameObject[] cardObjects = GameObject.FindGameObjectsWithTag("Card"); int ran = Random.Range(0, GameStaticVariable.maxHand);//내 손중 몇번째 있는거 버릴지 int resultIndex = 0; for (int i = 0; i < cardObjects.Length; i++) { if (cardObjects[i].GetComponent <CardGameObject>().GetCard().IsReversed())//뒤집어져 있는건 상대거 { continue; } ran--; if (ran == 0) { resultIndex = i; break; } } player.SubmitCard(cardObjects[resultIndex].GetComponent <CardGameObject>());//랜덤카드 제출 leftTimeText.text = "Left Time : " + "0"; break; } if (playerInput.IsSubmitFinish()) { break; }//시간 표시 yield return(null); } gameState.AskForNextState(); leftTime = GameStaticVariable.turnTime; yield return(new WaitUntil(() => gameState.GetGameState() == GameState.processing)); //processing까지 기달 yield return(new WaitWhile(() => gameState.GetGameState() != GameState.Wait)); //wait상태가 다시 될때까지 기달 } }