기본 패턴
csharp
controller.Move(moveDirection * moveSpeed * Time.deltaTime);설명
CharacterController는 "플레이어를 게임 규칙대로 직접 제어"하는 쪽에 가깝고,Rigidbody는 "물리 엔진 안의 물체로 참여"하는 쪽에 가깝습니다.- 점프, 미끄러짐, 충돌 반응, 밀침, 반동을 얼마나 물리 엔진에 맡길지에 따라 선택이 갈립니다.
- 정교한 캐릭터 조작, 계단 오르기, 벽 충돌 처리, 카메라 일체형 이동처럼 "게임 느낌"이 우선이면
CharacterController가 다루기 쉬운 경우가 많습니다. - 상자 밀기, 폭발 반동, 차량, 공, 물리 퍼즐처럼 외력과 충돌 반응이 핵심이면
Rigidbody쪽이 자연스럽습니다. - 둘을 섞어 억지로 한 캐릭터에 동시에 핵심 이동 수단으로 쓰면 제어권이 충돌하기 쉽습니다. 처음부터 주 이동 모델을 하나 정하는 편이 좋습니다.
빠른 정리
| 상황 | 더 적합한 선택 |
|---|---|
| 플레이어 조작감 우선 | CharacterController |
| 물리 반응 우선 | Rigidbody |
| 외력과 충돌이 핵심 | Rigidbody |
| 계단/슬로프/접지 제어가 중요 | CharacterController |
| 혼합 사용 | 가능하지만 주 제어 모델은 하나로 두는 편이 안전 |
주의할 점
"플레이어니까 무조건 CharacterController"나 "물리니까 무조건 Rigidbody"처럼 외우면 안 됩니다. 이 카드는 API 선택 카드이기보다 이동 철학 선택 카드에 가깝습니다. 조작감, 물리 반응, 네트워크 동기화까지 어떤 성격의 게임인지 먼저 보고 고르는 편이 좋습니다.
참고 링크
2 sources