내일배움캠프 118일차 - 최종프로젝트 8일차: RTS게임에서 건설위치의 유효성 판단

RTS게임에서 건설위치의 유효성 판단

이전 일차에서 건설 명령을 내리면 해당 위치까지 이동한 후에 건물을 짓는 로직을 작성하였다. 하지만 내가 만들어낸 것은 어디까지나 건설과정의 정의지, 건설을 하기 위한 조건을 붙인 것은 아니었다. 그 때문에 NavMesh 영역 바깥 같은 건설이 유효하지 않은 위치를 지정할 경우 해당 위치에까지 이동하려고 하는 문제가 있었다.

이러한 문제를 해결하기 위해 건설명령을 내리기 전 조건을 하나 더 추가하였는데, 이전에 건물 설치를 확정 지을 때 사용했던 ProjectPointToNavigation() 이다.

해당 함수는 입력한 좌표가 NavMesh와 근접한 지 확인하고, 지정한 범위 내로 NavMesh내의 좌표로 투영할 수 있으면 True를 반환한다. 만약에 False를 반환한다면 입력한 좌표는 NavMesh위에 있지 않을 가능성이 크므로 건설명령을 내리지 않는다.

건설불가 영역에 건설을 시도할 경우 "Build Error" 메세지를 출력한다.

이 함수는 NavMesh내의 유효한 근사 좌표값을 찾는데에 좋지만, NavMesh 위로 좌표를 투영하는 과정에서 오차가 발생할 수 있다. 또한 해당 함수가 판단하는 것은 포인트 단위의 좌표가 NavMesh위에 있는가지, 건설영역의 바운드까지 포함해서 계산해주지 않는다. 따라서 지형이나 장식물 등에 건물의 일부가 겹쳐있는 문제를 피하기 위해서는 추가적으로 지형/장식물에 콜리전을 추가하는 것으로 충돌검사를 해줘야할 것이다.

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁