유니티 - RigidBody (공부용)

김요셉·2023년 9월 7일

유니티 물리

목록 보기
1/1

Rigidbody

1.설명

게임 오브젝트에게 물리엔진을 적용하는 컴포넌트이다.
힘이랑 토크를 받아서 오브젝트가 사실적으로 움직이게 만든다.
스크립트로 힘을 가하거나 (ex Addforce) 다른 오브젝트와 물리적인 상호작용을 한다.
즉 이걸 오브젝트에 적용하면 물리적인 효과를 받는다는 뜻.

2. 적용법

  1. 게임 오브젝트에 add 컴포넌트에서 rigidbody 찾아서 넣으면 된다.
    (물론 적용한 오브젝트에 힘을 가하거나 변형을 하고싶다면 스크립트에서 rigidbody를 참조해서 써야한다.)
    ex)
    (Getcomponent를 했지만 그냥 인스펙터 창에서 마우스로 드래그해서 적용해도 된다.)

3. 속성

rigid body를 들어가보면 여러가지 속성이 있는데 간단하게 정리하겠다.

1.Mass
말그대로 질량.
오브젝트의 질량을 정할 수 있다.
A 오브젝트의 mass가 1이고 b가 10이면 약 b가 10배 더 무겁다고 본다(상대적)

2.Drag
이동 마찰계수이다. 물체가 움직일때 이동하면서 걸리는 마찰을 말한다.
물론 마찰이 크면 미끄러지는 움직임이 적을것이다.

3.Angular Drag
회전 마찰계수이다. 마찬가지로 회전에 대한 마찰.

4.Use Gravity
말 그대로 중력을 적용한다.

5. is kinematic
역운동학. 운동을 일으키는 힘의 문제 말고 운동상태만 다루는 역학.
간단하게 말해서 이 기능을 설정하면 외부 힘에 대한 영향이 없어짐.
적용하면 적용한 오브젝트는 다른 오브젝트에 물리적 영향을 주지만 본인은 받지않음.
스크립트가 enable(비적용) 상태여도 충돌이벤트 함수가 호출됨.
즉 건물 배경같이 캐릭터가 뚫고 지나갈 순 없는데 물리영향을 안받는데다가 사용 할 수 있음.

6. Interpolate(보간)
물리력을 이용한 움직임이 부자연스러울때 보간을 적용한다.
Rigidbody 적용으로 움직이는 물체가 부자연스럽고 끊어지는 느낌이 들때 적용할 수 있다.

-none
적용x

-interpolate
이전 프레임의 위치로 보간한다.
즉 프레임마다 이전 프레임의 위치를 참고하여 부드럽게 움직일 수 있게만듬.

-extrapolate
다음 프레임의 위치변화를 예측해서 보간한다.
즉 다음 프레임에 가있을 오브젝트의 위치를 참고하여 부드럽게 움직일 수 있게 만드는 것.

7. Collision Detection
충돌 검출의 세밀도 조정이 가능.
총알을 실제로 발사하거나 무언가가 빠르게 움직일 때 충돌에 오류가 나는 경우가 있다.(물체를 통과해서 충돌처리를 안함)
이는 사실 오브젝트가 이동하는 것은 한 프레임마다 물체가 그 위치로 순간이동 하는 것 처럼 움직이기 때문에 통과하는것.

-Discrete
불연속 충돌 검사
[fixed delta time] 단위로 계산
기본값이다.
0.02초 정도.
상대적으로 체크 횟수가 적어서 연산이 빠름.

-Continuous
충돌 대상이 동적 콜라이더(리지드 바디 적용)라면 Discrete랑 동일하게 체크하고
충돌 대상이 정적 콜라이더(리지드 바디 비적용)라면 연속적으로 충돌체크를 한다.
연산 비용이 크다. 다만 캐릭터가 빨라서 벽을 자꾸 뚫는다면 설정해보자. (서로 리지드 바디를 가지고 있으면 효과 x)

-Continuous Dynamic
Discrete 와 Continuous 의 혼합.
충돌 대상이 Continuous,Continuous Dynamic,정적 콜라이더면
Continuous 방식으로 충돌검사를 하고
그외에는 Discrete방식으로 검사.

-Continuous Speculative
추측성 연속 충돌 검사 방식
유일하게 키네마틱 설정이 가능
오브젝트 속도랑 콜라이더를 고려해서 추측성으로 충돌을 검사해서 가끔 충돌 안했는데 했다 뜨는 경우가 있음.

검출 정밀도
Discrete <Continuous <Continuous Speculative< Continuous Dynamic

8. Constraints

Freeze Position
해당 축에 대한물리적 이동을 막음

Freeze Rotation
해당 축에 대한물리적 회전을 막음

오브젝트 질량이 너무 가볍거나 모양에 따라 리지드 바디 적용시 오브젝트가 이리저리 날라다니거나 앞으로 고꾸라지거나 함.
그때 회전값을 막아두면 넘어지지 않음.

9. Info
현재 리지드 바디에 적용되는 물리정보들.
읽기전용임.

참고로 Rigidbody에는 슬립모드라는게 있어서
두 물체가 부딪히고 의미있는 움직임이 없으면
충돌이벤트 함수 호출을 멈춤.

이상 RigidBody에 대한 설명과 간단한 사용법이었다.
혹여나 보는 사람들은 틀린 정보가 있을 수도 있으니 감안해서 보기 바란다.

profile
그냥 공부용

0개의 댓글