Unity&C#

[Unity] Character Controller & Rigidbody

리네엔 2024. 12. 2. 23:53

1. CharacterController

CharacterController는 캐릭터의 움직임을 처리하기 위해 설계된 특수한 컴포넌트로, 주로 캐릭터의 이동을 수동으로 제어하는 데 사용

주요 특징

  • 직접 이동 제어: Move() 또는 SimpleMove() 메서드를 사용하여 캐릭터를 움직일 수 있습니다. 이동은 캐릭터가 물리적으로 기반한 힘에 의해 움직이는 것이 아니라 직접적으로 위치를 제어.
  • 충돌 처리: CharacterController는 다른 콜라이더와의 충돌을 처리하지만, Rigidbody처럼 물리 기반의 반응을 자동으로 제공하지는 않음. 미는 등의 물리상호작용을 원한다면 OnControllerColliderHit() 함수를 사용.
  • 중력 및 물리 제어: 중력은 자동으로 적용되지 않으며, 개발자가 직접 스크립트를 통해 중력을 적용해야 함.

2. Rigidbody

Rigidbody 물리 법칙을 사용해 오브젝트의 움직임을 처리

주요 특징

  • 물리 엔진 사용: Rigidbody는 Unity의 물리 엔진에 의해 제어되며, 중력, 마찰력, 충돌 반응 등 물리적 상호작용을 자동으로 처리합니다. 물리 법칙에 따라 이동, 회전 및 충돌이 이루어짐.
  • 충돌 처리 : Rigidbody는 자동으로 다른 콜라이더와 물리 상호작용을 수행하여 밀거나 밀리림
  • 중력: Rigidbody는 기본적으로 중력을 자동으로 받음(useGravity 옵션)

CharacterController와 Rigidbody의 차이점 요약

특성 CharacterController Rigidbody
물리 엔진 사용 사용하지 않음 사용함
중력 적용 직접 구현 필요 (Move로 수동 이동) 자동으로 중력 적용 (useGravity)
이동 방식 메서드(Move(), SimpleMove())로 직접 제어 물리 엔진을 통한 힘(AddForce()) 사용 or valocity
충돌 처리 충돌 감지는 가능, 반응은 직접 구현 필요 충돌에 대한 물리적 반응을 자동 처리
회전 제어 기본 회전 없음, 수동으로 구현 가능 물리 엔진에 의해 회전 자동 적용
사용 용도 캐릭터 움직임 제어, 플레이어/NPC 물리적 상호작용 오브젝트 (박스, 장애물 등)

'Unity&C#' 카테고리의 다른 글

[Unity] Canvas Component  (0) 2024.12.23
[Unity] Animation 관련 소소한 문제들  (0) 2024.12.06
StateMachine / Behaviour Tree  (0) 2024.11.25
[Unity] DrawGizmo  (0) 2024.11.18
CSVtoScriptableObject  (0) 2024.10.30