유니티 입문자의 문제 해결 : Rigidbody 2D와 2D 콜라이더 충돌시 떨림 현상

최명구·2021년 10월 14일
0

유니티 공부하자

목록 보기
3/7

해결: 오브젝트의 위치를 transform.position으로 이동하는 대신 Rigidbody2D의 MovePosition()을 사용한다.

원인: transform.position은 이동이라기 보단 "순간이동"에 가깝기 때문에 Update안에서 transform.position을 사용시 사용자는 계속 콜라이더 안으로 오브젝트를 순간이동 시키고 물리시스템은 콜라이더 안으로 들어온 오브젝트를 바깥으로 밀어내게 된다 그 과정에서 떨림 현상이 일어나는 것

원리: Rigidbody2D의 MovePosition()은 오브젝트를 특정 위치로 이동하기 위한 속도를 계산하여 "이동" 시키기 때문에 이동 과정 중에 콜라이더와의 충돌을 계산하여 멈추거나 밀어낼 수 있다.

아직 유니티를 시작한지 2달 정도 밖에 안 되기 때문에 틀린 내용이 있을 수 있습니다. 만약 틀린 내용이 있다면 댓글로 알려주세요 🙏🙏

profile
게임 개발 공부하는 사람

0개의 댓글