오늘의 계획

1. EndScene 수정

2. Clear/GameOver 로고 추가

3. QA

4. 발표 준비

 

  • EndScene 수정
private void Start()
{
    // 조 이름 회전 및 컬러 변경
    StartCoroutine(MoveInCircle());
    DOTween.To(() => _creditText.color, x => _creditText.color = x, new Color(Random.value, Random.value, Random.value, 1), colorChangeDuration)
        .SetLoops(-1, LoopType.Yoyo)
        .OnStepComplete(() =>
        {
            DOTween.To(() => _creditText.color, x => _creditText.color = x, new Color(Random.value, Random.value, Random.value, 1), colorChangeDuration);
        });
}

private IEnumerator MoveInCircle()
{
    Vector3 originalPosition = circleCenter;
    float timer = 0.0f;
    float circleDuration = 5.0f;

    while (true)
    {
        float angle = timer / circleDuration * 360 * Mathf.Deg2Rad;
        Vector3 offset = new Vector3(Mathf.Cos(angle) * radius, Mathf.Sin(angle) * radius, 0);
        endingCredit.transform.position = originalPosition + offset;

        timer += Time.deltaTime;
        if (timer > circleDuration) timer -= circleDuration;

        yield return null;
    }
}

 

DOTween과 코루틴(Coroutine)을 이용하여 EndScene에 조 이름이 원을 그리며 움직이고 색이 변하도록 하는 코드를 추가했다.

 

팀원분께 피드백을 받으며 private와 public의 차이는 알지만 각각 언제 쓰는지 궁금해졌다.

public은 다른 곳에서 매서드를 주고 받을 때 사용하며 기본적으로 보안 등의 문제로 동일한 클래스나 struct의 코드에서만 받을 수 있는 private을 지향하는게 좋다고 한다.

 

  • Clear/GameOver 로고 추가

Clear와 GameOver 로고를 간단하게 만들어서 PlayScene 담당분들께 넘겨드렸다.

Clear 로고는 애니메이션으로 색 변화를 주었다.

 

  • QA

맴버의 카드를 맞췄을 때, 본인의 프로필과 다른 사람의 프로필이 바뀐 현상이 있다. 맴버 카드와 프로필이 잘못 매치되어있어 금방 수정하였다.

또한 오픈한 카드 여러 번 클릭이 가능한 버그를 발견했다. 카드 한 장 오픈한 뒤, 다른 카드를 오픈하지 않고 오픈된 카드 연속 클릭하면 프로필이 열리면서 남은 횟수와 시도 횟수 카운트 변하는 현상과 카드를 여러 번 눌렀을 때 카드가 한 장만 사라지는 버그가 있다.

카드가 180도 돌아가는데 90도 돌아갔을 때 앞면을 보여주는 형식으로 카드를 뒤집는 코드를 짰는데 카드가 90도 돌아갔을 때 여러 번 클릭하면 순간적으로 다른 카드로 변화되어 생긴 버그로 그것을 방지하면 되는 것이었다.

 

그 외에도 버그 수정하면 또다른 버그가 터지고 수정하면 또 터지고 반복이었다. 어쨌든 해냈다.(나 말고 팀원분들이)

 

+ 난이도 시스템을 추가하기로 했다.

GameManager에서 CardCount 횟수를 조절하여 Easy, Normal, Hard로 나눈 뒤, 각각 30회, 20회, 10회로 제한하였다.

오늘의 계획

1. 캐릭터 움직임 애니메이션

- DOTween으로 코드 만들어보기

2. onclick.AddListner()을 통해 버튼에 이벤트 할당하기 3. 게임 BGM 작업

 

  • 캐릭터 DOTween으로 코드 만들기
public GameObject memberCharacter;

void Start()
{
    Sequence moveSequence = DOTween.Sequence();
    moveSequence.Append(memberCharacter.transform.DOMoveY(1, 0.3f)); // Y 좌표를 1로 이동
    moveSequence.Append(memberCharacter.transform.DOMoveY(0, 0.5f)); // Y 좌표를 0으로 이동
    moveSequence.SetLoops(-1, LoopType.Restart); // 루프 설정
}

 

미니프로젝트인만큼 기간이 짧기도 하고 이 방법으로 해내기보다는 이런 방법도 있으니 시간이 되면 시도해보자! 라는 제의를 받아 시작했지만 점프 뛰게 하는 것까진 구현했는데 캐릭터 6개가 순서대로 파도타기를 하며 점프하는 것을 반복하는 것은 구현하지 못했다.

다시 하던대로 유니티에서 애니메이션을 건들여서 구현하였다.

각각 캐릭터들의 애니메이션을 부여한 뒤, Cycle Offset에 값을 조금씩 차이나게 설정하여 차례대로 뛰도록 했다. 

DOTween은 많이 쓰인다고 하니 주말에 좀 더 공부해보아야겠다.

 

  • onclick.AddListner()을 통해 버튼에 이벤트 할당하기
public Button exitBtn;

private void Awake()
{
    restartBtn.onClick.AddListener(Restart);
    exitBtn.onClick.AddListener(Exit);
}
    
public void Restart()
{
    SceneManager.LoadScene("Game");
}

public void Exit()
{
    SceneManager.LoadScene("Start");
}

Start보다 먼저 시작되는 Awake 함수로 Restart 버튼과 Exit 버튼이 호출되도록 한다. 버튼들이 호출되면 SceneManager.LoadScene()을 통해 각각의 Scene을 불러오도록 한다.

유니티로 돌아가서 Canvas에 들어가있는 Script에서 각각 게임오브젝트 버튼을 넣어준다.

 

오늘 공부를 하며 깨달은 것은 '내가 무엇을 정확히 모르는가'였다. 

매서드 등의 역할과 이론은 이해하고 있지만 코드 자체를 어떻게 구성해야하는지를 모르는 상태였다. 코드를 차근차근 찾아보여 해석하는 것은 가능하지만 어떤 것을 개발하라고 나에게 주어지면 막막하다는 생각이 든 이유도 그것이었다. 이번 프로젝트를 통해 코드를 자주 써보고 코딩에 익숙해지는 시간이 되면 좋겠다.

 

 

내 프로젝트를 로컬에 저장하기

1. Git Desktop에서 Create a New Repository를 누른다.

위에서부터 차례대로 이름, 작업내용 설명, 경로, 무시할 특정 파일, 라이센스이다.

 

2. 이름과 설명을  입력한 뒤, Publish repository를 누른 뒤, 이름과 설명을  입력한다.

 

그럼 Publish repository가 Fetch origin으로 바뀐다. 이것을 눌러주면 내 로컬에 저장이 된다.(내 GitHub 사이트에 들어가서 확인해보면 생성되어 있다.)

 

3. GitHub에 공유할 유니티 프로젝트의 Assets을 우클릭 하면 나오는 Show in Explorer를 누른다.

 

4. GitHub Desktop에서 역시 우클릭 하여 나오는 Show in Explorer를 누른다.

 

5. GitHub Desktop에서 띄운 창에 유니티 프로젝트의 내용들을 옮긴다.

 

6. GitHub Deskop에서 Summary를 입력해준 뒤, Commit한다.

 

그 후 원격으로 올리고 싶다면 Push하면 된다.

오늘의 계획

1. 캐릭터 움직임 애니메이션

- 여유가 된다면 DOTween 활용해보기

2. onclick.AddListner()을 통해 버튼에 이벤트 할당하기

 

Button 컴포넌트 대신 AddListener를 이용하는 이유

Button 컴포넌트는 할당된 메서드가 visual studio에서 레퍼런스 참조가 안되고 미리 할당해놨기 때문에 유동적으로 버튼의 동작을 바꿀 수 없다. 이를 해결하기 위해 AddListener를 사용한다.

 

...할 예정이었는데 Git과 GitHub에 대해 강의를 듣고 팀원들과 맞춰보다가 하루를 보냈다.

 

Git이란?

VCS(Version Control System 버전을 관리하는 시스템) 중 하나
1. 형상[버전]관리
2. 협업을 위한 원격저장소
- 작업을 관리하고 공유하기에 용이하다.

 

Commit: 로컬에 저장[캡쳐]. 원격으로 올리는 것이 아닌 내 로컬에만 올린다.

- Amend: 제목 및 설명 수정

- Undo: 커밋 되돌리기

Discard: 수정사항 되돌리기

Stash: 수정사항 임시보관

Pull: 원격저장소로 커밋 올리기

Push: 원격저장소에서 커밋 받아오기

Checkout: 원하는 시간선으로 이동. 새 브랜치

 

2023.11.01 - [부트캠프] - Git과 GitHub 추가 설명

 

혹시 모를 사고를 방지하기 위해 Main이 아닌 Develope에 Branch를 따로 만들어서 작업하기로 했다. 따로 만든 Branch는 작업한 뒤, 삭제하고 다시 새로 만들어 작업하는 방식으로 Develope에 Merge(병합)하여 나중에 한 번에 Main에 합치는 방식이다.

Mac과 Window 간의 작업이라 그런지 오류도 자주 나고, 한 명씩 연습해보느라 시간이 조금 걸렸다.

나의 경우, 다른 파일에서 미리 작업한 것을 Export하여 새로 만든 공동 프로젝트에 Import 해서 수정했다.

+ Recent posts