게임 캐릭터 이동 시 떨림 90%는 이 설정 3개 때문입니다

2026-08-02 · 테크 · 읽는데 6분

게임을 만들다 보면 캐릭터가 이동할 때 화면에서 지지직거리듯 떨리는 현상을 한 번쯤 마주치게 됩니다. 특히 2D 게임에서 자주 발생하는 이 문제는 물리 엔진 설정과 카메라 설정이 원인인 경우가 대부분입니다. 정리하자면, 이동 코드를 FixedUpdate에 넣고, Rigidbody2D의 Interpolate 옵션을 확인하고, 카메라 설정을 점검하면 대부분 해결됩니다. 이 세 가지를 순서대로 확인해 보면 생각보다 쉽게 원인을 찾을 수 있습니다.

캐릭터 이동 떨림, 왜 생기는 걸까

떨림 현상의 가장 흔한 원인은 물리 엔진과 렌더링 주기의 불일치입니다. 게임 엔진은 화면을 그리는 주기(Update)와 물리 계산을 처리하는 주기(FixedUpdate)가 서로 다릅니다. 캐릭터 이동을 Update에 작성하면 프레임 속도에 따라 이동 거리가 들쭉날쭉해지면서 떨림으로 보이게 됩니다.

특히 Rigidbody2D를 사용해 캐릭터를 움직인다면 이 문제가 두드러집니다. 물리 컴포넌트를 사용하는데 이동 코드를 일반 업데이트 문에 두면, 물리 엔진이 예상한 위치와 실제 렌더링 위치가 어긋나면서 캐릭터가 떨리는 것처럼 보입니다. 실제 사례를 보면 FixedUpdate로 이동 코드를 옮기는 것만으로 바로 해결된 경우가 많습니다.

이동 코드는 FixedUpdate, 이걸 놓치면 안 됩니다

Rigidbody2D로 캐릭터를 움직일 때는 이동 코드를 반드시 FixedUpdate 안에 넣어야 합니다. FixedUpdate는 물리 엔진의 업데이트 주기에 맞춰 실행되기 때문에, 물리 계산과 이동 처리가 자연스럽게 동기화됩니다.

여기서 중요한 점은 캐릭터 이동 코드만 옮겨서는 부족할 수 있다는 것입니다. 카메라 회전, 총알 발사, 애니메이션 등 물리 엔진과 연동되는 다른 코드들도 함께 FixedUpdate로 옮겨야 떨림이 완전히 사라집니다. 한 개발자의 사례를 보면, 이동만 옮기고 나머지는 Update에 남겨둔 채 테스트했을 때는 만족스러운 결과가 나오지 않았다고 합니다.

정리하면 다음과 같습니다.

  • Rigidbody2D 관련 이동 코드는 FixedUpdate에 작성
  • 물리 엔진과 연관된 회전, 점프, 충돌 처리도 FixedUpdate로 통일
  • 입력 처리나 UI 업데이트는 Update에 유지해도 무방

Rigidbody2D Interpolate와 Extrapolate, 뭘 선택해야 할까

Rigidbody2D에는 Interpolate와 Extrapolate 옵션이 있습니다. 이 둘은 물리 엔진이 캐릭터의 움직임을 화면에 부드럽게 보여주는 방식을 결정합니다.

Interpolate는 이전 프레임의 위치를 기반으로 이동을 부드럽게 처리하고, Extrapolate는 다음 프레임의 예상 위치를 기준으로 움직임을 보간합니다. 기본적으로 Extrapolate가 활성화되어 있는 경우가 많은데, 예상 위치가 실제 움직임과 어긋나면 오히려 떨림이 더 심해질 수 있습니다.

다만 이 옵션만으로 떨림이 완전히 해결되는 경우는 드뭅니다. Interpolate 설정으로 바꿔도 문제가 계속된다면, 결국 이동 코드의 위치가 원인인 경우가 많습니다. FixedUpdate로 코드를 옮긴 뒤 Interpolate를 활성화하는 조합이 가장 안정적인 결과를 보여줍니다.

카메라 설정도 떨림의 원인, Pixel Perfect Camera 확인법

캐릭터 이동 코드가 문제없다면 카메라 설정을 살펴봐야 합니다. 메인 카메라가 캐릭터를 따라가는 방식에 따라 떨림이 발생할 수 있습니다.

카메라가 캐릭터를 부드럽게 따라가지 못하고 순간적으로 위치를 고정하는 방식이라면, 화면 전체가 떨리는 것처럼 보입니다. 특히 픽셀 아트 기반 게임에서 Pixel Perfect Camera 컴포넌트를 사용할 때 이 문제가 자주 발생합니다.

Pixel Perfect Camera는 해상도를 최적화해 선명한 화면을 제공하지만, 특정 옵션이 활성화되어 있으면 렌더링 주기와 카메라 이동이 어긋나면서 떨림이 생깁니다. 이 경우 Upscale Render Texture 옵션을 비활성화하거나, Virtual Camera를 활용해 캐릭터를 부드럽게 따라가도록 설정을 바꾸는 것이 좋습니다.

카메라 관련해서 확인할 항목을 정리하면 다음과 같습니다.

  • 카메라가 캐릭터 위치를 고정으로 따라가는지, 부드럽게 보간하는지 확인
  • Pixel Perfect Camera 사용 시 Upscale Render Texture 옵션 해제 시도
  • 카메라 회전이 필요한 경우, 회전 코드도 FixedUpdate에서 처리

떨림이 계속되면 이 순서로 점검해 보세요

문제 해결을 위해 확인할 순서를 정리하면 다음과 같습니다.

  1. Rigidbody2D 사용 여부 확인 후, 이동 코드가 FixedUpdate에 있는지 점검
  2. 물리 엔진과 연동되는 다른 코드들도 FixedUpdate로 통일했는지 확인
  3. Rigidbody2D의 Interpolate → Extrapolate 옵션을 Interpolate로 변경
  4. 카메라 설정 확인, Pixel Perfect Camera 옵션 해제 시도
  5. 그래도 해결되지 않으면 카메라 이동 방식 자체를 재검토

이 순서대로 진행하면 대부분의 떨림 현상은 원인을 찾을 수 있습니다. 물리 엔진과 카메라 설정이 서로 맞물려 동작하는 구조다 보니, 한 가지만 고쳐서 해결되기보다는 여러 요소를 함께 점검하는 것이 좋습니다.

Q. Update 대신 FixedUpdate에 이동 코드를 넣으면 렉이 심해지지 않나요?

FixedUpdate는 초당 고정된 횟수로 실행되기 때문에 프레임이 낮아도 물리 연산은 일정하게 유지됩니다. 오히려 Update에 이동 코드를 두면 프레임 변화에 따라 이동량이 달라져 떨림이 발생합니다. 물리 연산이 많지 않은 일반적인 2D 게임이라면 성능 차이는 거의 느껴지지 않습니다.

Q. Interpolate와 Extrapolate 중 어떤 게 더 좋은가요?

상황에 따라 다릅니다. Interpolate는 과거 위치를 기준으로 보간해 안정적이고, Extrapolate는 예상 위치를 기준으로 하다 보니 예측이 빗나가면 오히려 떨림이 심해질 수 있습니다. 기본적으로는 Interpolate를 먼저 적용해 보고, 문제가 해결되지 않으면 바꿔보는 것이 좋습니다.

Q. Pixel Perfect Camera를 꼭 써야 하나요?

픽셀 아트 게임에서 선명한 화면을 원한다면 유용한 컴포넌트입니다. 다만 해상도 설정이 게임 해상도와 맞지 않으면 떨림이 발생할 수 있습니다. Upscale Render Texture 옵션을 해제하거나, 카메라 크기를 게임 해상도에 맞게 조정하면 대부분 해결됩니다.