ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내일배움캠프 57일차 TIL - 최종 프로젝트 개발 진행 1
    TIL/Unity 2024. 7. 9. 00:37

     

    [한 줄 요약]

    기존 기능들의 버그 수정과 퀄리티 향상에 시간을 쏟았다. 


    [학습 내용]

     

    최종 프로젝트 기초 개발


    사용자 경험 향상

    대표 고양이 시각적 효과 추가

    대표 고양이로 선정된 고양이에 대한 시각적 피드백이 없다는 담당 튜터님의 조언에 따라 시각적 효과를 추가하였다.

    대표 고양이

     

    타겟 시각적 효과

    고양이 상태에서 몬스터를 타겟으로 지정할 경우 몬스터 아래에 노란 원이 뜨도록 하여, 유저로 하여금 타겟이 올바르게 지정되었는지 알 수 있도록 구현하였다.

    타겟의 아래에 노란 원이 생긴다.

     

    대표 고양이 자동 지정

    고양이 리스트에 고양이가 한 마리도 없는 상태에서, 혹은 대표 고양이가 지정되지 않은 상황에서 처음으로 고양이를 획득하였을 때, 해당 고양이를 대표 고양이로 자동 지정되도록 구현하였다. 대표 고양이가 없으면 던전에 입장이 되지 않기 때문에 자동으로 지정되도록 하였다.

     

     

    버그 수정

    타겟팅 버그 수정

    어느 순간부터 몬스터가 제대로 타겟되지 않는 버그가 생겼다. 그래서 디버그 로그를 출력해보면서 추적해보았다. 그랬더니 if (EventSystem.current.IsPointerOverGameObject() == false)라는 조건식을 통과하지 못하는 것을 알아낼 수 있었다. 해당 메서드는 UI를 클릭하지 못하게 하는 메서드다. 그런데 UI를 클릭하지 않아도 통과하지 못하는 상태였던 것이었다.

    원인을 결국 찾아냈는데, 화면 페이드 효과를 주기 위해 만든 캔버스가 전체화면 크기로 활성화되어 있었던 것이다. 그런데 눈에 보이지 않아서 있는지 몰랐다. 이를 꺼주자 해결되었다.

     

    고양이 스폰 버그 수정

    던전 1-1 스테이지에서 1-2 스테이지로 넘어갈 때 자꾸 이상한 곳에 고양이가 스폰되는 버그가 있었다. 스테이지마다 4개 정도 되는 스폰포인트가 있고, 이것을 배열로 담아서 사용했었다.

    // 이전 코드
    GameObject[] catSpawnPoints = GameObject.FindGameObjectsWithTag("CatSpawnPoint");
    
    Transform spawnPoint = catSpawnPoints[Random.Range(0, catSpawnPoints.Length)].transform;
    Debug.Log(catSpawnPoints.Length);

    일단 디버그 로그를 찍어보았는데, catSpawnPoints.Length가 4가 아닌 8이 출력되었다.

    알고보니 이전 스테이지에서 사용한 스폰포인트가 사라지지 않고 Missing을 가리키고 있던 것이었다.

    매 실행마다 지역변수인 catSpawnPoints는 다시 생성되고 할당될 것이므로, 이것보다는 FindObjectsWithTag 쪽이 문제일 것이라고 추측하였다. 아마 스테이지가 Destroy 되어도 Tag에는 남아있는 모양인 거 같다. 그래서 매 스테이지마다 스폰포인트 자체를 파괴하도록 코드를 바꿨다.

    // 고양이 위치 설정
    GameObject[] catSpawnPoints = GameObject.FindGameObjectsWithTag("CatSpawnPoint");
    
    Transform spawnPoint = catSpawnPoints[Random.Range(0, catSpawnPoints.Length)].transform;
    foreach (GameObject catSpawnPoint in catSpawnPoints)
    	Destroy(catSpawnPoint);

    이렇게 했더니 이번에는 잘 동작되었다.

     

    공격 애니메이션 버그 수정

    공격이 완성되지 않았기에 공격 애니메이션이 동작하는지 확인하지 못한 채 애니메이션 작업을 끝냈다. 후에 공격 기능이 작동하고 나니, 애니메이션이 출력되지 않는다는 걸 알았다.

    알고 보니 공격 중인지 체크하는 bool 함수 IsAttacking을 끄고 켜는 코루틴을 잘못 사용하고 있었다. 코루틴이 실행되고 있는지 null로 확인하려고 했는데, 그냥 IsAttacking이 켜져있는지 확인하는 쉬운 방법으로 전환했다.

    if (!IsAttacking)
        SetIsAttacking = StartCoroutine(SetIsAttackingCoroutine());

     

     

     

     

    룰타일 특강


    요약

    룰타일

    • 대상 타일 주변 8방향의 타일들의 유무에 따라 이미지를 다르게 적용하는 타일이다. 잘 활용하면 모서리 등의 타일을 쉽고 빠르게 깔 수 있다.
    • 조건을 추가하고 각 방향을 한 번 클릭하여 타일이 없는 조건, 두 번 클릭하여 타일이 있는 조건임을 명시해줄 수 있다.
    • 룰 타일을 오버라이드하여 기존의 룰을 유지한 채 타일만 바꿀 수 있다.
    • 코드를 짜서 룰타일도 동적으로 깔 수 있다.

     


    [회고]

    오늘 하루를 버그 수정에 시간을 보냈는데도, 고쳐야 할 사항들이 많다. 내일 스킬을 시작하려고 했는데, 아마 내일은 시작하지 못할 거 같다.

    내일 추가로 작업해야할 사항들은 다음과 같다.

    • 간헐적으로 몬스터가 말뚝 박고 움직이지 않는 현상
    • 기본 고양이 지급
    • 컨트롤 UI 통일
    • 고양이 추가 시 빈 슬롯이 없다고 뜨는 버그
    • 공격 모션 중 이동 제한