Ejemplo n.º 1
0
    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;//원래자리로 백
                }
            }
        }
    }
Ejemplo n.º 2
0
    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상태가 다시 될때까지 기달
        }
    }