ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내일배움캠프 1일차 TIL - S.A 작성, 팀원 소개 카드 게임
    TIL/Unity 2024. 4. 15. 20:52

     

    [학습내용]

    본캠프 시작 첫 날이기 때문에 OT와 조 편성이 이루어졌다. 나는 A2조에 배정되었고, 오전에는 S.A 작성에 몰두하였다.

    작성된 이번주 S.A

     

    이번주에 진행하게 될 첫 프로젝트 주제는 "팀원 소개 카드 게임"이다. 사전캠프에서 개발했던 르탄이 카드 뒤집기 게임에서 조금 더 발전시키면 되는 주제였다.

    우선 기존에서 추가로 구현해야하는 기능 목록은 다음과 같았다.

    • ⭐ 필수 ⭐ 매칭 성공 시, 팀원의 이름 표시 / 실패 시 실패 표시
    • 클릭할 때(카드 뒤집을 때), 시작할 때, 진행 중일 때 성공, 실패 소리 넣어보기
    • 타이머 시간이 촉박 할 때 게이머에게 경고하는 기능 작성해보기(시간이 붉게 변하거나 긴박한 배경음악으로 변경)
    • 한 번씩 뒤집은 카드는 색을 다르게 표시하기 (옅은 회색 등)
    • 결과에 매칭 시도 횟수 표시

    조원이 5명으로 구성되었으므로 우선 하나씩 붙잡고 해결해보았다. 깃허브를 이번주에 배우게 될 예정이기 때문에, 깃허브 사용법을 배우고 나서 각 기능을 통합하기로 하였다.

    저 중에서 나는 첫 번째 기능을 구현하기로 하였다.

     

    Card.cs

    public class Card : MonoBehaviour
    {
        ...
        
        public string name;
        string[] nameArr = { "손영주", "김재혁", "임재훈", "박신후", "신재원", "손영주", "김재혁", "임재훈", "박신후", "신재원" };
        
        ...
        
        public void Setting(int number)
        {
            ...
            name = nameArr[idx];
        }
        
        ...
    }

     

    먼저 카드에 맞는 이름을 넣어주었다. 모든 이름을 스트링 배열 안에 넣어주고, 카드에 name 변수를 만들어 인덱스에 맞는 이름을 저장해주었다.

     

    GameManager.cs

    public class GameManager : MonoBehaviour
    {
        ...
        
        public Text nameTxt;
        
        ...
        
        public void Matched()
        {
            if(firstCard.idx == secondCard.idx)
            {
                ShowName(true);
                ...
            }
            else
            {
                ShowName(false);
                ...
            }
            ...
        }
    
        public void ShowName(bool isAnswer)
        {
            if (isAnswer)
            {
                nameTxt.text = firstCard.name;
            }
            else
            {
                nameTxt.text = "실패";
            }
            nameTxt.gameObject.SetActive(true);
        }
    }

     

    그 뒤 정답 판정이 나오면 NameTxt 텍스트에 이름 또는 실패 문구를 넣은 뒤 출력되도록 코딩했다.

    NameTxt

     

    그리고 이름을 표시할 NameTxt 텍스트 오브젝트를 만들어주는 것도 잊지 않았다. 추가적으로 기존 르탄이 이미지를 조원 사진으로 대체하는 작업도 진행하였다.

     

    [결과물]

    실패 시
    성공 시

     

     

    [회고]

    아직 1일차인 만큼 무엇을 해야할지 몰라 시간을 효율적으로 쓰지 못한 것 같다. 깃허브 특강을 듣게 된다면 빠르게 진행하여 다른 챌린지 항목들도 도전해봐야겠다는 생각이다.

     

    추가 기능 챌린지 목록

    • 12p 랜덤하게 섞는 부분을 코드스니펫을 활용하지 않고 직접 만들어 보기
    • 실패할 때 마다 시간 감소 효과 넣어보기
    • 카드 뒤집기에서 실제로 카드가 뒤집어지는 모습 연출하기
    • 카드 오브젝트 개수 늘리기
    • 나만의 카드 등장 효과 연출하기(파도타기 효과로 등장, 화면 밖에서 나선형으로 날아오는 등장 등)
    • firstCard 고르고 5초 간 카운트 다운 - 안 고르면 다시 닫기
    • 현재 스테이지(또는 난도)에 따라 카드 배열 증가시켜보기
    • 결과에 점수 표시 → 남은 시간, 매칭 시도한 횟수 등을 점수로 환산
    • 스테이지 선택과 현재 해금한 스테이지가 구분 가능한 시작 화면 만들기, 플레이 중 해당 스테이지의 최단 기록 띄워주기