TIL.2 4/16 한번 뒤집은 카드를 다른 색으로, 카드가 서로 매치 되지 않으면 실패 텍스트

김진영·2024년 4월 23일

스파르타코딩

목록 보기
16/39
post-thumbnail

저번주 화요일꺼 증발한줄알고 포기했었는데 임시 글에 있던 것을 오늘 발견해서 다시 올린다...

오늘의 학습 키워드

어제 역할분담했었던 부분 중에서 한번 뒤집은 카드를 다른 색으로 바뀌게 하고, 카드가 서로 매치 되지 않으면 실패 텍스트가 화면 정중앙에 나오게 만드는 것이 오늘의 학습 키워드.

공부한 내용

먼저 한번 뒤집은 카드를 다른 색으로 바뀌게 하려면 back에 있는 컴포넌트만 뒤집었을 경우에 다른 색으로 변경해주면 된다.

private SpriteRenderer backImg; // spriterenderer 접근을 위해 선언

  private void Start()
{
    backImg = back.GetComponent<SpriteRenderer>();      
  // back에 있는 컴포넌트만 선언
}
 public void CloseCard()
 {
     backImg.color = new Color(139.0f / 255.0f, 139.0f / 255.0f, 139.0f / 255.0f, 255.0f / 255.0f);
     }

먼저 spriterenderer에 접근하기 위에 spriterenderer 선언해주고 변수를 생성해준다.
그리고 그것을 사용하기 위해 GetComponent를 선언해주고 카드의 뒷부분만 색깔을 바꿔야하니까 back.GetComponent로 선언.

다음으로 닫아진 카드의 색깔을 변경하기 위해 선언했던 렌더러를 이용해서 backImg.color = new Color를 사용해서 원하는 색상의 RGB 입력하면 뒤집었던 카드는 색깔이 바뀌게 된다.

서로 매치 되지 않으면 실패 텍스트

서로 매칭이 되지 않고 카드가 뒤집어질때 실패 텍스트가 뜨게 만들었다.
먼저 FailTxt라는 이름의 모양을 hirerachy창에 만들어준다

보이는 것처럼 만들어주고 gamemanager.cs로 넘어간다

    public GameObject failTxt;

게임오브젝트를 failTxt라는 이름으로 만들어준다
그러고나서 우리는 이 실패라는 문구를 매치가 실패했을때 뜨게 해야하므로 매치함수에 if문 안에 넣어준다.

   public void Matched()
   {
       if(firstCard.idx == secondCard.idx +8 || firstCard.idx +8 == secondCard.idx)
       {
           
           audioSource.PlayOneShot(audioClip);

           firstCard.DestoryCard();
           secondCard.DestoryCard();
           cardCount -= 2;

           if(cardCount == 0)
           {
               Time.timeScale = 0.0f;
               GetCurrentScore();
               OnResultPanel();
               //endText.SetActive(true);
           }
       }
       else
       {
           firstCard.CloseCard();
           secondCard.CloseCard();
           failTxt.SetActive(true);
           time -= 2.0f;//카드 매칭이 틀렸을 시 제한시간 2초 차감한다 [실패할때마다 시간 감소]
       }
       firstCard = null;
       secondCard = null;
   }

아래쪽 else 구문이 매치가 되지않았을때 실행되는 구문이므로 이부분에 failTxt.SetActive(true);를 넣어준다
우리는 이 실패문구를 한번만 뜨게 하는게 아니라 매치가 안될때마다 계속 뜨게 할 것이므로 destroy가 아닌 setactive를 활용하였다.

public void ButtonContinue()
{
    failTxt.SetActive(false);
}

그리고 단지 텍스트만 뜨고 사라지는건 아쉬우니까 그 실패텍스트에 버튼기능을 달아서 없애는 기능을 추가하였다.
buttoncontinue라는 함수를 새로 만들고
버튼을 눌렀을때 텍스트가 사라지는 기능을 만들었다.

온클릭 아래에 게임매니저.cs 넣어주고 안에 들어있는 함수 넣어주면 완성

오늘의 회고

오늘은 매치가 되지 않았을때 실패 텍스트가 뜨게 만들었지만 내일은 더 추가해서 서로 매치가 되었을 때 이름이 뜨는 텍스트를 만들 것이다.

0개의 댓글