프로젝트 귀신런 제작 기한일이 눈앞으로 다가왔다.
아쉽게도 기한 상의 문제로 넣지 못한 기능이나 기능의 리팩토링을 하기에는 시간이 부족했다. 하지만 마지막 날인 만큼, 무리해서 기능을 추가하지는 않고 기존에 반영해야 하는 기능들만 마무리하고 QA 등 테스트를 진행하는 과정을 거쳤다.
어제자로 작업했던 아웃라인 셰이더가 정상 작동하는 것을 확인했으니, 이제 이 기능을 상호작용 가능한 모든 아이템에 반영해 보았다.
처음 작업에 착수할 때에는 다소 귀찮은 구석이 많다. 아웃라인 셰이더를 프리팹에 직접 붙여주고, 해당 아이템의 텍스처를 찾아놓고 아웃라인 셰이더를 적용한 Material을 만든다. 그리고 각각의 재질과 MeshRenderer 위치를 프리팹에 끼워준다.
이와 같이 작업하고, 아이템 및 오브젝트의 아웃라인이 정상적으로 출력되는지 테스트를 진행했다.
이와 같이 아웃라인이 표시되는 것을 확인하였다.
게임 테스트를 진행하면서 발생한 버그나 벽 뚫기 등의 수정사항의 반영만 하였다.
주요 기능 개발 요소 (UI 및 상호작용 이벤트 담당)
문은 양방향으로 열릴 수 있게 애니메이션으로 구현하였으며, 트리거 영역을 설정하여 서 있는 위치를 bool값으로 받는 방식으로 문을 미는 방향으로 열리게 설정
서랍은 열고 닫을 수 있도록 애니메이션으로 구현하였으며, 내부에 아이템을 넣는 방식으로 자식 오브젝트로 연결시키는 방식으로 구현함. 책상의 경우 아래에 숨을 수 있는 공간을 만듬
스위치와 철창은 서로 연계되어 작동되며, 스위치의 경우 리스트로 철창 개수를 받아 철창을 원하는 개수만큼 연결시킬 수 있음. 스위치 하나의 작동으로 여러 개의 철창을 동시에 열 수 있음.
스테이터스 바는 UI - Image를 이용해 구현하였으며, Image 형식을 Filled로 설정하여 플레이어의 체력과 스태미나 변화에 따라 표시되는 게이지가 실시간으로 반영되도록 구현함.
크로스헤어를 통해 플레이어의 마우스 위치를 표시하고, 해당 온오프 기능을 UI 전반적으로 관리함
마우스의 포인터의 Transform.Position을 캔버스 상의 RectTransform으로 변환하여 아이템에 커서를 갖다댔을 시 아이템 및 물체와 상호작용 가능 여부를 텍스트로 출력하는 기능 구현
아웃라인 셰이더를 제작 후, 아웃라인이 표시되는 Material을 구현
아이템 위에 커서가 올라갔을 시 Material Rendering을 변환하는 기법으로 아웃라인 표시 기능을 구현함
공식 시간상으로는 5일이지만, 사실 연휴 내내 작업한 것까지 해서 상당한 작업시간을 투자하여 게임을 제작하였다. 이렇게 시간을 투자한 것 치고는 사실 기여도나 완성도 면에서 아쉬움으로 남는 부분이 꽤 된다.
우선 이번 프로젝트를 진행하면서 부족하고 미숙했다고 느꼈던 점은 아래와 같은 게 있다.
- 깃허브 사용이 미숙해 에셋을 날려먹는 경우가 꽤 있었고, 이걸 복구하는 과정이 조금 힘들었다.
- 설계를 한다는 과정이 미숙했고, 각자 생각한 대로만 설계를 하다가 이걸 잇는 과정에서 다양한 문제를 겪었다. 충돌도 발생하고 잇는 과정이 비효율적이게 형성되는 과정도 있어서 리팩토링을 추가로 거쳐야 하는 점 등 번거로움이 있었다.
- 아무래도 아직까지는 유니티를 다루는 실력이 미숙하다.
특히나 죄송스럽게 여겨지는 건 Merge를 하고 회의를 하는 과정에서 아무래도 팀장님 쪽으로 일이 많이 몰리는 상황이 많았다. 최대한 일을 나눠서 받으려고 했지만 협업하는 상황에서 일을 적절히 분배하는 것도 중요한 부분임을 느꼈다.
그래도 첫 결과물인 게임이 나온 것에 성취감을 느낄 수 있었다.