[서문]벽에 Collider를 넣었음에도 가끔 플레이어가 벽을 통과하는 버그가 발생하곤 합니다. 물체의 가속도가 일정량 이상으로 올라가면 생기는 버그로, 원인과 해결 방법에 대해 알아보겠습니다. [본문]1) 원인 : 2cm의 Collider가 있을 때, 1프레임 당 1cm 움직이는 물체에는 잘 적용되지만, 1프레임 당 3cm움직이는 물체는 오브젝트의 현재 위치 + 3cm = Collider의 뒷쪽 이 되면서 충돌처리가 잘 되지 않는 것입니다. 2) 해결 방법 : Interpolate의 옵션을 Extrapolate로 하면 충돌을 1프레임 더 앞서 예측하기 때문에 벽을 통과하는 현상이 나아집니다. 위의 방법에도 버그 현상이 나아지지 않는다면, Collision Detection의 옵션을 Continuous로, 그래도 나아지지 않는다면 Continuous Dynamic으로 해줍니다. Continuous Dynamic은 성능을 깎아먹기 때문에 크게 추천하지 않습니다. 벽에 부딪혔을 때 가속도가 더 더해지지 않도록 코드를 설계해야 버그 현상이 일어나지 않습니다. 이와 같이 콜라이더가 붙어있는 사물에 충돌하였을 때 콜라이더를 뚫는 문제가 발생하였다. 특히 Mesh Collider이며 두 콜라이더 사이 각도가 90도 이하일때 발생하였다. 해결법은 Edit -> Project Settings -> Time 에 들가보면 Fixed Timestep를 적당히 줄이면 된다. 나의 경우 0.002까지 줄이니 문제가 발생하지 않았다. 저걸 수정하면 update주기가 빨라져서 검사를 더 자주하게 되므로 충돌 문제를 해결하기 때문에 프레임이 떨어질 수 있다. 혹시 더 좋은 방법이 있으면 댓글 남겨주세요 ㅠㅠ 반응형 저작자표시비영리변경금지 '가이드 > 유니티, C#' 카테고리의 다른 글
해리포터라는 영화에서 주인공 해리포터는 벽을 뜷고 호그와트로 가는 것을 보게 됩니다. 지난 시간에는 '에셋스토어로 마을 꾸미기'를 다루었는데요. https://itadventure.tistory.com/408 유니티 3D - 에셋 스토어로 마을을 꾸며보자! 지난 챕터에서는 에셋 스토어에서 공짜로 구매한 자모 로봇 캐릭터의 스크립트를 수정하는 방법을 살펴보았는데요. itadventure.tistory.com/405 유니티 3D - 아셋 스토어 캐릭터 스크립트 수정 - 스카이 itadventure.tistory.com 재미있게도 우리는 건물을 배치한 것 외에는 아무것도 하지 않았는데요. 그 이유는 유니티에서는 보이는 물체와 충돌하는 물체가 나뉘어져 있기 때문입니다. 다만 일부 고급 에셋은 '충돌영역'이 이미 설정되어 있어 예외일 수도 있습니다. 그 전에 한가지 기본적으로 알아둘 내용이 있는데요. 그렇기 때문에 충돌체의 경우 세세한 충돌을 감지하기 보다는 대략적인 윤곽에 해당하는 정육면체나 캡슐(알약을 세워놓은 모양)의 범위만 정해놓고 이를 충돌영역으로 정해두는 것이 일반적인데요. ※ 여담으로 가상세계 세컨드라이프에서도 동일한 개념이 있는데 오브젝트 속성 중 팬텀(Phantom)이라는 속성입니다. 이제 이 콜라이더를 하나씩 잡아보도록 할까요? 그리고 우측 인스펙터(Inspector) 창을 가장 아래로 스크롤 다운시켜 이어서 추가할 컴포넌트로 Physics(피직스) - Box Collider(박스 콜라이더) 순으로 선택합니다. 그러면 건물 주위에 이런 녹색 테두리가 생겨나는데로 이 것이 바로 박스 콜라이더, 즉 충돌체입니다. 자모 로봇을 월드에 배치하고 이 건물을 지나가려하면 장애물 때문에 지나갈 수가 없는 것이지요. 이러한 컬리젼 설정 작업을 모든 건물에 적용해주면 됩니다. 중간에는 이러한 모양의 건물도 있을 수 있습니다. 이러한 경우를 콜라이더 영역을 편집하는 기능을 이용하면 됩니다. 이 버튼을 클릭하시면 물체 주위에 작은 점이 표시가 되는데요. 이 점을 클릭하여 드래그하면 아래와 같이 박스 콜라이더의 범위를 조정하실 수 있습니다. 아래와 같이 조정해주시면 이제 캐릭터가 지나갈 때 정육면체 영역만이 장애물이 됩니다. 참고로 자모 로봇 캐릭터도 콜라이더가 내부적으로 들어 있습니다. 로봇도 모든 관절을 일일히 충돌체크하면 복잡하기 때문에 시도해보실 부분은 카메라를 콜라이더를 설정한 건물이 보이게 이동 배치하고 https://itadventure.tistory.com/404 유니티 3D - 아셋 스토어 캐릭터 사용하기 지난 시간에는 마우스 휠을 굴려 카메라를 줌인, 줌아웃하는 방법에 대해 다루어 보았었지요? itadventure.tistory.com/403 유니티3D 마우스 휠로 Zoom In/Out 지난 닉네임 같은 크기 글씨에 이어 이번에는 itadventure.tistory.com 한단계 더 나아가서 카메라가 자동으로 자모 로봇을 따라다니게 하면 더 좋겠지요? 양 무리들에게 울타리는 장애물이라기보다는 보호의 영역이라고 합니다. 나는 선한 목자라 - 요한복음 10장 11~15절 말씀 - 다음 게시글. 360도 HDRI 배경 적용하기 https://itadventure.tistory.com/411 유니티 3D - 360도 HDRI 배경 적용하기 요새 VR 때문에 360 배경, 이른바 파노라마 배경이 유행하고 있지요? 360 배경이란 내가 바라보는 방향에 따라 실제 그 현장에 와 있는 것처럼 목이 돌아가는데로 주위 사물들이 보이는 전방향 배 itadventure.tistory.com |