해결: 오브젝트의 위치를 transform.position으로 이동하는 대신 Rigidbody2D의 MovePosition()을 사용한다.
원인: transform.position은 이동이라기 보단 "순간이동"에 가깝기 때문에 Update안에서 transform.position을 사용시 사용자는 계속 콜라이더 안으로 오브젝트를 순간이동 시키고 물리시스템은 콜라이더 안으로 들어온 오브젝트를 바깥으로 밀어내게 된다 그 과정에서 떨림 현상이 일어나는 것
원리: Rigidbody2D의 MovePosition()은 오브젝트를 특정 위치로 이동하기 위한 속도를 계산하여 "이동" 시키기 때문에 이동 과정 중에 콜라이더와의 충돌을 계산하여 멈추거나 밀어낼 수 있다.
아직 유니티를 시작한지 2달 정도 밖에 안 되기 때문에 틀린 내용이 있을 수 있습니다. 만약 틀린 내용이 있다면 댓글로 알려주세요 🙏🙏