내일배움캠프 86일차 TIL + 최종 자료 제출 + 미니맵 클릭시 해당 위치로 카메라 이동
작업 내용
최종 발표 준비 자료 제출
오늘은 우리 최종 발표날을 위해 제출할 자료들을 좀 준비해야겠다. 이런 날이 좀 많은데 그만큼 우리가 할일이 많을 수 밖에 없는게 영상이든 글쓰기든, 섬네일이나 그런 이미지든 우리가 뭘 할줄 아는게 아닌 단순 개발자들이라 이런거 하는데 익숙하지가 않다.
추가로 기록하고 할 것도 많다.
아무튼 그래서 오늘은 발표용 ppt 완성하고 거기에는 우리가 진행하면서 겪은 트러블슈팅, 우리 코드 구조, 우리가 진행한 디버깅, 배운점과 아쉬운 점 등이 들어간다.
나는 제출용 영상찍고 자막을 다는 일을 했다. 이번에 제출용 영상은 이전에 소개용 영상보다는 분량도 더 길고 모든 게임 기능을 최대한 다 설명해야했다.
그래서 팀원 전체가 발표 준비를 했고 이젠 진짜 다음주에는 다시 개발에 몰두 할 수 있을 것 같다.
미니맵 클릭시 게임 카메라 이동
나는 추가적으로 구현하고싶은게 이것저것 있었는데 그 중에 특히 미니맵을 클릭하면 해당 자리로 카메라가 이동하는 기능을 꼭 넣고 싶었다. 이유는 내가 습관적으로 그러기 때문이다.
아무튼 그래서 미니맵에서 좌표를 RectTransformUtility.ScreenPointToLocalPointInRectangle(miniMapRectTransform, MouseStartPos, null, out localPoint); 이 함수를 통해 미니맵이 있는 UI인 miniMapRectTransform에서 playerInput에서 vector2로 마우스 좌표의 스크린좌표를 가져온 MouseStartPos의 UI내의 로컬 좌표를 Vector2인 localPoint에 돌려준다.
이러면 UI내에서 중간을 (0,0)으로 하여 RectTransform기준 좌표를 가져오는데 여기에 간단히 RectTranform상의 UI내에서 총 가로세로 길이와 실제 게임화면 좌표에서 맵 전체 가로세로 길이를 비율로 맞춰서 곱해주면 된다.
Vector2 localPoint;
RectTransformUtility.ScreenPointToLocalPointInRectangle(miniMapRectTransform, MouseStartPos, null, out localPoint);
// 미니맵의 사이즈와 실제 월드의 사이즈 비율 계산
float mapHeightRatio = worldMapHeight / miniMapRectTransform.rect.height; // 22 / 350
float mapWidthRatio = worldMapWidth / miniMapRectTransform.rect.width;
Vector3 worldCamPosition = new Vector3(localPoint.x * mapWidthRatio, localPoint.y * mapHeightRatio, 0);
cameraControl.ChangeHeight(worldCamPosition);
그리고 나니 팀원이 시네머신으로 카메라를 묶어놔서 해당 스크립트에 가서 버츄얼 카메라의 좌표를 바꾸게 해주어야했다.
처음에는 이 함수를 처음 써봐서 로컬 좌표라는게 어떤걸 가져오는지 몰라서 일단 UI의 위치 좌표를 로컬 좌표에서 빼서 0,0의 지점을 맞출려 했는데 덕분에 헷갈려서 고생좀 했다.
정말 간단히 UI내에서 중심을 (0,0)으로 가진 RectTranform좌표를 가져온다는 것을 알고나니 아주 간단해졌다.
이런 좋은 기능 덕분에 미니맵을 눌러서 카메라를 움직이는 기능은 비교적 쉽게 만들 수 있었다.
마무리
오늘은 발표준비만 거의 하다가 개발은 많이 못했다. 좀 아쉬웠지만 다음 주에는 좀 더 개발에 투자할 수 있기를 바란다. 그래도 우리가 발표준비는 잘할 것 같다.