안녕하세요!


오늘은 저희 게임에서 문을 지나는 처리에 관한 글을 써보려 합니다.

사실 상당히 예전에 작업했던 내용입니다.



1. 문을 지나가는 느낌 개선


최초의 문은 플레이어가 들어가면 페이드아웃이 될 때까지 조작을 막고 가만히 있었습니다.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77004e22b89620cd1fc89c02998

만들었던 당시에는 불편하거나 이상한 점을 못느꼈습니다.


그러다 시간이 지나고 우연히 인과율이라는 게임을 보게 됐습니다.


그런데 문을 지나는 느낌이 상당히 부드러웠습니다.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77050bc2add6f55d7fe89c02998


이걸 보니 저희 게임의 문이 얼마나 어색한지 바로 깨닫게 됐습니다.


그래서 문을 개선하는 작업에 들어가게 되었습니다.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77005b82dde6e5dd3af89c02998


우선 플레이어가 문 콜라이더에 부딪혀도 멈추지 않고 통과하도록 수정했습니다.


대신 조작을 막는 방식은 유지하고, 문 방향으로 강제 이동하도록 설정했습니다.


이렇게 하더라도 보통 플레이어가 방향키를 누르고 있기 때문에 조작이 막혔다는 것을 알기 힘듭니다.


뒤를 돌아서 문을 빠져나가면 벽을 뚫거나 로직이 꼬일 가능성이 있기 때문에 이런 식으로 처리했습니다.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77056b92e8c3408d7fb89c02998


카메라를 살짝 움직여주는 기능도 추가했습니다.


캐릭터를 문 앞에 텔레포트시키기 때문에, 카메라를 조금 뒤로 당긴 상태에서 전환을 시작하도록 했습니다.


최초 위치를 조정하며 전환이 최대한 부드럽게 이루어지도록 다듬었습니다.




2. 물건 충돌 처리



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d7705fec78dd37088da989c02998

 

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77003ed7adf625985fc89c02998

 


플레이어 캐릭터 뿐 아니라 물건들도 문 충돌 처리가 필요했습니다.


특히 던지거나 집어든 물체의 경우 플레이에 지장을 주는 문제가 있었습니다.



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77052eb7ed36f0fd4f989c02998

 

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce884fa1bd6253119da20824c04b6efd9ad482f5cc4f3af17314bb7cda938274527ca69dbd692a46575d77057b97cd96f0885a889c02998


그래서 던진 경우 네비게이션 매쉬 안에서 마지막 속도값을 이용해서 도착 위치를 계산했고,


집어든 물체는 문 콜라이더와의 충돌을 무시하도록 처리했습니다.




2ebcc068e2db3e8650bbd58b3680766f1eb72ef3


대부분의 물체는 문과의 충돌을 무시하지만, ai는 문을 넘지 않도록 수동으로 위치를 제어하도록 처리했습니다.


문에 다수의 적이 끼이게 될 경우 의도치 않게 방을 탈출할 수 있기 때문입니다.



3. 물건 밀기 처리


그리고 시간이 지나서 게임 행사에서 시연하는 도중 문제가 발생했습니다.



3da8c32eb49c3faf689fe8b115ef046c03ca07d695ad


의도는 상자를 집어서 가져가는 것인데, 그냥 몸으로 밀고 가는 플레이어도 있었습니다.


하지만 물건과 캐릭터가 따로 이동하기 때문에 제대로 밀어지지 않고 빗겨갑니다.


이 케이스도 예외 처리를 추가했습니다.


3da8c32eb79c3faf689fe8b115ef046caba19c86dbcb


이제 몸으로 밀고 있는 물체는 플레이어와 함께 넘어갑니다.


최근에는 대형 오브젝트들도 지원하게 됐습니다.



3da8c32eb69c3faf689fe8b115ef0468f6655f7de20b


읽어주셔서 감사합니다!



[개발 일지 링크 모음]


[스팀 페이지]




21b8c22df1da39a865a6d9a058d62d3b1f65e20beaa048d7b323

9