미니 프로젝트

유니티 프로젝트 : #3 2D TopDown 게임 (완)

근본넘치는개발자 2024. 10. 14. 22:23

오늘은 개인 과제로 만들었던 프로젝트에 대한 회고 겸

구현하면서 시도했던 내용들을 정리하고자 한다.


이전 글에 캐릭터 이름 기능에 관해 글을 써버려서

기능별로 나눠서 작성할까 하다 그냥 한 번에 프로젝트에 묶어 쓰기로 했다.

 

2024.10.11 - [유니티/2D] - 유니티 2D - 캐릭터 이름 구현 (WorldSpace 와 InputField - TextMeshPro)

 

과제 기간은 1주일을 받았고,

강좌를 듣고 이틀이 지난 후부터 본격적으로 시작해

완성하기까지 5일 정도의 시간이 걸렸다.

 

중간에 휴일과 주말이 있었고 이때도 작업을 했다.

실질적으로 코드치고 만든 시간보다 구상하는 데 시간이 더 걸렸던 거 같은데;;;  

다음엔 시간도 한번 측정해 봐야겠다.

 

일단 과제는 필수 기능과 도전 기능으로 나뉘었는데 

제시한 도전 기능 중 1개를 제외하고 다 구현했다.

 

구현만 했다지 지금 보니 효율적이지 않은 부분도 많은 것 같다.

(글 쓰면서 다시 세세하게 보니 놓친 조건들도 꽤 있었다.. )

 

혹시라도 따라 하실 분은 참고 하시길. 

 

아 그리고 게임 내 sprite들은

Unity 무료 에셋 및 빙 이미지 크리에이터를 활용해 만든 것들을 사용했다.  

 

구현한 내용 

 

기본 움직임(필수) - InputSystem 이용

카메라가 플레이어를 따라가게 만들기(필수)  - 시네머신 카메라 사용

이름 입력 시스템 / 인게임 이름바꾸기 (도전, 필수)

 

윗 부분들에 대한 인게임 영상이 궁금하시다면 이전 블로그 글 내용 참고하시면 됩니다.

 

 

https://youtu.be/bjgFsXweQw8?si=FVN4oYf3qQdVj_gr

 

 

캐릭터 애니메이션 추가 / 캐릭터 선택 시스템  ( 기본, 필수)

SpriteLibray와 Sprite Resolver, Library Asset을 활용하여 처리

 

시간 부분 - DeltaTime.Now를 통해 구현.

정석대로라면 서버에서 시간을 받아와야 하지만 일단 서버가 없으니 이렇게 구현.

지금의 방식은 기기에 설정되어 있는 시간을 그대로 가져오기에

기기 시간을 임의로 변경 시 게임 내 시간도 변하는 문제 발생 

 

 

 

 

https://youtu.be/b3J2SInvuwM?si=ubI_EFgb3crLu8pr

 

 

참석인원 UI (도전) 

오브젝트 풀링 활용 / FindWithTag를 통해 등록한 플레이어만 나오도록 구현

(분명 더 좋은 방식이 있을 거 같은데;;;) 

 

 

NPC 대화 (도전)

 

NPC의 자식 오브젝트에 collider를 하나 추가하여

플레이어가 접근했을 시 대화 활성화하도록 설정

 

Raycast2D를 통해 플레이어가 어떤 NPC와 대화하는지 감지.

이를 토대로 엑셀에 저장된 대화 내용을 불러 오도록 설정 (현재는 불러오는 과정에서 오류)

 

 

 

https://youtu.be/bZVa6C6vRBQ?si=_I_l67-Gs71WjXDU

 

 

 

여기까지가 과제로 제출하라고 제시했던 부분이고 

아래는 개인적으로 추가 시도해 봤던 내용 

날씨

파티클 시스템을 활용하여 눈 내리는 연출 구현

 

 

 

https://youtu.be/wrpuJkjaSiQ?si=0Uqy6PyPLmcNClwF

 

 

엑셀 연동

 

Excel Importer라는 외부 Tool을 활용하여 유니티 내부에서 엑셀을 빌드하여 데이터 처리 시도

(로그인 부분, 대화 내용 부분 시도)

 

 

2024.09.11 - [분류 전체보기] - 유니티 - '엑셀'과 연동 해보자

 

구글 스프레드시트와 연동하는 법도 고민해봤지만 일단 위 방식으로 진행했습니다.

구글 스프레드 시트와 연동하는 법이 궁금하시다면 아래를 참고하시면 됩니다.

 

2024.10.05 - [유니티/공통] - 유니티 - JSON을 이용하여 데이터를 저장해보자. #2 응용 - 구글 스프레드 시트 활용 (feat. 구글 앱스 스크립트)

 

 

메뉴 UI - Toggle을 활용하여 TabBar 구현 

 

https://youtu.be/NVBP_CoU-Xk?si=paRXgrV9kCK-SorG

 

 

 

이번 과제를 하면서 내가 정했던 목표는

그동안 알기만 하고 시도 안 해봤던 걸 위주로 도전 + 객체 지향적으로 설계해보기였다.

(객체 지향적인건 시도한다고 했으나 솔직히 잘 한건지 모르겠다.;;)

 

시도를 하면서 이해 못 했던 부분을 이해하거나 새로운 부분들을 알게 된 건 좋았다.

 

다만 초반에 하고 싶은 작업 우선 위주로 진행했다 보니 막판에 문제가 되었던 거 같다. 

제출 전 도전 기능 구현 부분 중 오류를 발견했는데 결국 수정 못하고 제출했다.

금방 수정 할 줄 알았는데 막혔다. ;;;

 

깃허브로 과제를 제출하고 링크를 올리는 방식이라서 수정이 가능하니 추가 작업할 예정이지만

정해진 기간 내 완수하지 못한 부분은 좀 아쉬웠다. 

 

그 외에도 추가로 구현하고 싶은 내용들이 몇가지 더 있긴 한데  

(시계 바늘 돌아가는 것, 밤 낮 구현 및 애니메이션 효과, 카메라 줌 기능 등)

일단 여기서 만족해야 하지 싶다.. 

 

다음에는 우선 순위를 잘 세워서 작업을 해야 할 것 같다.