Unity입력과 물리

CharacterController vs Rigidbody

플레이어 이동을 만들 때 CharacterController와 Rigidbody 중 무엇을 기준으로 설계할지 비교합니다.

마지막 수정 2026년 3월 21일

기본 패턴

csharp
controller.Move(moveDirection * moveSpeed * Time.deltaTime);

설명

  • CharacterController는 "플레이어를 게임 규칙대로 직접 제어"하는 쪽에 가깝고, Rigidbody는 "물리 엔진 안의 물체로 참여"하는 쪽에 가깝습니다.
  • 점프, 미끄러짐, 충돌 반응, 밀침, 반동을 얼마나 물리 엔진에 맡길지에 따라 선택이 갈립니다.
  • 정교한 캐릭터 조작, 계단 오르기, 벽 충돌 처리, 카메라 일체형 이동처럼 "게임 느낌"이 우선이면 CharacterController가 다루기 쉬운 경우가 많습니다.
  • 상자 밀기, 폭발 반동, 차량, 공, 물리 퍼즐처럼 외력과 충돌 반응이 핵심이면 Rigidbody 쪽이 자연스럽습니다.
  • 둘을 섞어 억지로 한 캐릭터에 동시에 핵심 이동 수단으로 쓰면 제어권이 충돌하기 쉽습니다. 처음부터 주 이동 모델을 하나 정하는 편이 좋습니다.

빠른 정리

상황더 적합한 선택
플레이어 조작감 우선CharacterController
물리 반응 우선Rigidbody
외력과 충돌이 핵심Rigidbody
계단/슬로프/접지 제어가 중요CharacterController
혼합 사용가능하지만 주 제어 모델은 하나로 두는 편이 안전

주의할 점

"플레이어니까 무조건 CharacterController"나 "물리니까 무조건 Rigidbody"처럼 외우면 안 됩니다. 이 카드는 API 선택 카드이기보다 이동 철학 선택 카드에 가깝습니다. 조작감, 물리 반응, 네트워크 동기화까지 어떤 성격의 게임인지 먼저 보고 고르는 편이 좋습니다.

참고 링크

2 sources