Unity/개념정리

[유니티 2022.3.ver] Rigidbody2D

Hya68 2024. 7. 16. 14:58

목차

  1. Rigidbody2D란?
  2. Rigidbody2D와 Rigidbody의 차이
  3. Rigidbody2D의 각 기능
  4. 스크립트에서 Rigidbody2D 접근 방법

1. Rigidbody2D란?

- 오브젝트를 물리 제어 하에 작동시키는 데 사용할 수 있는 2D 컴포넌트

- 즉, 오브젝트의 중력, 질량, 드래그, 운동량에 대한 반응과 같은 물리 기반 동작을 제어할 수 있는 설정

 


2. Rigidbody2D와 Rigidbody의 차이

  • Rigidbody2D : Rigidbody의 2D 개발 버전
  • Rigidbody : 3D 개발 버전

Rigidbody2D와 Rigidbody
Rigidbody2D와 Rigidbody는 컴포넌트 충돌이 일어나기 때문에 동시에 추가할 수 없다.

 


3. Rigidbody2D의 각 기능

Dynamic, Kinematic, Static 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 클래스를 제공해줍니다.

따라서 클래스 객체 선언 -> 초기화 -> 호출 과정을 통해 물리 제어를 해주면 됩니다.

GetComponent는 <>안에 컴포넌트 타입을 적으면 해당하는 타입의 컴포넌트를 가져옵니다.
스페이스 바를 눌렀을 때 변경되는 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