TIL_2025_02_17 RigidBody2D

김효중·2025년 2월 17일

RigidBody2D란?

RigidBody는 강체는 의미이며 유니티에서 물리 엔진을 이용할 때 사용하는 컴포넌트이다.
RigidBody 컴포넌트와의 차이는 RigidBody2D는 2D상에서만 움직이므로 XY평면에서만 움직이며
그 평면의 수직은 축(Z축)만을 중심으로 회전하는 점이 다르다.

또한 RigidBody와 공통적으로 Transform을 오버라이드하여 위치와 회전을 업데이트한다.
그리고 Collider2D 컴포넌트는 암시적으로 RigidBody2D와 연결되어 충돌을 검사한다.

바디 타입(Body Type)

RigidBody2D는 바디 타입(Body Type)에 따라 다른 동작을 한다.
바디 타입에 따라 위치, 회전, 콜라이더 상호작용이 다르게 적용된다.
RigidBody2D가 충돌을 하기 위해서는 Collider2D가 필요하며 없다면 서로 충돌하지 않는다.

동적(Dynamic)

동적(Dynamic)타입은 실제로 물리연산을 적용하는 동작을 한다.
중력과 충돌을 모두 처리하며 가장 일반적인 타입이다.
일반적인 오브젝트나 플레이어 오브젝트에 사용된다.

정적( Static)

동적(Dynamic)타입은 시뮬레이션 상으로 움직이지 않는다.
중력등 영양을 받지 않고 고정 되며 질량이 무한으로 취급된다.
해당 타입의 오브젝트는 Dynamic 타입의 RigidBody2D와만 충돌한다.
강체나 배경등의 고정 오브젝트에 사용된다.

키네마틱(Kinematic)

Kinematic 타입은 스크립트로 조정되는 타입이다.
이때 외부의 중력과 힘의 영향을 받지 않으며 질량이 무한으로 취급된다.
해당 타입의 오브젝트는 Dynamic 타입의 RigidBody2D와만 충돌한다.
스크립트도만 관리하는 오브젝트나 Tiled Map에서 중력이 없다면 사용할 수 있다.

리지드바디 2D(Rigidbody 2D) 프로퍼티

Simulated

다른 물체와 상호작용을 가능하게 하며 해제시 중력과 힘등의 적용이 되지 않는다.

Gravitu Scale

적용되는 중력

Collision Detection (Discrete / Continuous)

충돌 검사 방식을 정의하며 Discrete 의 경우 빠른속도로 충돌시 통과 혹은 겹칠 수 있으며
Continuous 의 경우 절대 겹지치 않지만 CPU부하가 커진다.

Sleeping Mode (Never Sleep / Start Awake / Start Asleep)

게임 오브젝트가 휴식 상태일 때 프로세서 시간을 절약하기 위해 “수면”모드에 들어가는 방법을 정의한다.
Never Sleep 의 경우 휴식모드를 비활성화 합니다 (Unity에서도 추천하지 않습니다)
Start Awake 의 경우 시작시 오브젝트가 깨어있습니다
Start Asleep 의 경우 시작시 휴식모드이고 충돌시 깨어납니다

Interpolate (None / Interpolate / Extrapolate)

물리 업데이트 사이에 게임 오브젝트 움직임이 보간되는 방법을 정의하며 움직임이 어색할 때 유용하다.
None 의 경우 보간이 적용되지 않습니다
Interpolate 의 경우 이전 프레임의 오브젝트의 위치에 따라 보간합니다
Extrapolate 의 경우 다음프레임의 추정 위치 기반으로 보간합니다

profile
도전하는 개발자

0개의 댓글