[유니티 2022.3.ver] Rigidbody2D
목차
1. Rigidbody2D란?
- 오브젝트를 물리 제어 하에 작동시키는 데 사용할 수 있는 2D 컴포넌트
- 즉, 오브젝트의 중력, 질량, 드래그, 운동량에 대한 반응과 같은 물리 기반 동작을 제어할 수 있는 설정
2. Rigidbody2D와 Rigidbody의 차이
- Rigidbody2D : Rigidbody의 2D 개발 버전
- Rigidbody : 3D 개발 버전
3. Rigidbody2D의 각 기능
바디 타입(Body Type) | 리지드바디 2D의 컴포넌트 설정 => 움직임(포지션 및 회전) 동작 및 콜라이더 2D 상호작용을 조작 - 동적(Dynamic) : 움직여야 하는 항목에 가장 일반적인 바디 타입 - 키네마틱(Kinematic) : 중력과 힘의 영향을 받지 않아 스크립트를 통해 이동하는 타입 - 정적(Static) : 시뮬레이션 상태에서 전혀 움직이지 않는 타입 |
머티리얼(Material) | 특정 부모 리지드바디 2D에 연결된 모든 콜라이더 2D의 공통 머티리얼 지정 |
시뮬레이션됨(Simulated) | 리지드바디 2D 및 연결된 모든 콜라이더 2D와 조인트 2D가 런타임에 물리 시뮬레이션과 상호작용 여부 결정 |
자동 질량 사용(Use Auto Mass) | 리지드바디 2D가 콜라이더 2D에서 게임 오브젝트의 질량을 자동으로 감지할 때 사용 |
질량(Mass) | 오브젝트의 질량 (단위:kg) |
선 항력(Linear Drag/Drag) | 포지션 움직임에 영향을 미치는 저항계수 |
각 항력(Angular Drag) | 회전 움직임에 영향을 미치는 저항계수 |
중력 스케일(Gravity Scale) | 게임 오브젝트가 중력의 영향을 받는 정도 |
충돌 검사(Collision Detection) | 콜라이더 2D 간의 충돌을 검사하는 방식 정의 - 이산(Discrete) : 매우 빠르게 충돌할 경우 서로 겹치거나 통과 가능 - 연속(Continuous) : 서로 겹치거나 통과하지 않음. Discrete보다 CPU 사용 시간이 길어짐 |
휴면 모드(Sleeping Mode) | 오브젝트가 휴식 상태일 때 프로세서 시간 절약을 위해 수면 모드에 들어가는 방법 정의 - 휴먼하지 않음(Never Sleep) : 수면 모드 비활성화(리소스 영향으로 비추천) - 활성 상태 시작(Start Awake) : 처음부터 비수면 모드 - 휴먼 시작(Start Asleep) : 처음엔 수면 모드, 충돌하면 비수면 모드 |
보간(Interpolate) | 물리 업데이트 사이에 오브젝트 움직임이 보간되는 방법 정의(움직임이 어색할 때 유용) - 없음 : 움직임에 스무딩 적용X - 보간(Interpolate) : 이전 프레임에서 오브젝트 포지션을 기반으로 움직임에 스무딩 적용 - 외삽(Extrapolate) : 다음 프레임에의 오브젝트 포지션을 추정해 움직임에 스무딩 적용 |
Constraints | 리지드바디 2D의 움직임에 대한 제약사항 정의 (포지션 고정, 회전 고정) |
Layer Overrides | 다른 콜라이더 2D와의 충돌 여부를 결정할 때 이 리지드바디 2D에 연결된 모든 콜라이더 2D가 포함/제외해야 하는 추가 레이어 선택 |
Info | 오브젝트 정보 |
위의 표는 Dynamic일 때의 기능들입니다. Kinematic과 Static은 공식 매뉴얼을 참고해주세요.
Rigidbody2D를 통해 중력 가속도(떨어지는 속도)를 설정할 수 있습니다.
만약 중력 가속도를 증가(떨어지는 속도를 빠르게)하고 싶다면 질량을 줄이고 중력 스케일을 늘리는 것을 통해 구현할 수 있습니다.
4. 스크립트에서 Rigidbody2D 접근 방법
스크립트에서는 Rigidbody2D 클래스를 제공해줍니다.
따라서 클래스 객체 선언 -> 초기화 -> 호출 과정을 통해 물리 제어를 해주면 됩니다.
참고자료
리지드바디 2D - Unity 매뉴얼
Rigidbody 2D 컴포넌트는 오브젝트를 물리 엔진이 제어하게 만듭니다. 스탠다드 Rigidbody 컴포넌트와 유사한 많은 개념이 리지드바디 2D에도 적용되나 2D에서는 오브젝트가 XY 평면에서만 움직이고 그
docs.unity3d.com
Rigidbody2D - Unity 스크립팅 API
Rigidbody physics component for 2D sprites.
docs.unity3d.com
Component-GetComponent - Unity 스크립팅 API
Gets a reference to a component of type T on the same GameObject as the component specified.
docs.unity3d.com