[Unity] Rigibody
Rigibody
오브젝트의 물리엔진기능을 넣고 싶다면 Rigibody(강제)컴포넌트를 부착하면 된다.
내부적으로 FixedUpdate를 통해서 물리연산을 진행하여 위치와 회전값을 변경한다.
속성 | 설명 |
---|---|
Mass |
질량을 나타내는 수치로 실제로 사용하는 무게단위가 아닌 싱대적인 단위로 mass가 1인 오브젝트와 5인 오브젝트는 5배 무겁다고 생각하면 된다. (편의상 1kg라고 생각) |
Drag |
이동할 때 적용되는 마찰계수(저항) |
Anguler Drag |
회전할 때 적용되는 마찰계수(저항) |
Use Gravity |
중력 여부 작용 |
Is Kinematic |
체크하면 물리 시뮬레이션을 이용하여 이동하지 않고 transform으로 이용하여 이동한다. 해당 항목을 체크하면 물리엔진의 영향을 받지않는다. |
Interpolate |
물리력을 이용한 움직임이 끊어지는 현상이 발생할 때 보간해준다. interpolate: 이전프레임 Extrapolate: 다음 프레임 |
Collision Detectoin |
충돌 감지 옵션으로 아주 빠른 물체는 물리 엔진이 충돌 검출을 놓칠 수 있다. 따라서 좀 더 세밀한 충돌을 검출하기 위한 옵션값이다. |
Freeze Postion |
X, Y, Z축 중에서 해당 축으로의 이동을 막는다. |
Freeze Rotation |
X, Y, Z축 중에서 해당 축으로의 회전을 막는다. |
Force
리지드바디 컴포넌트가 제공하는 힘을 가하는 함수는 두가지가 존재한다.
- void AddForce(Vector3 force)
- void AddRealativeForce(Vector3 force)
public void AddForce(Vector3 force);
//
// 요약:
// Adds a torque to the rigidbody relative to its coordinate system.
public void AddRelativeForce(Vector3 force);
//
// 요약:
// Adds a torque to the rigidbody relative to its coordinate system.
물체에 힘을 가하는 방식은 여러방식으로 줄 수 있지만 사용방식은 알고 가는 것이 좋다.
AddForce의 경우 Vector3타입으로 월드좌표 기준으로 힘이 가해지기 때문에 내부에서 방향설정을 해주어야지 원하는 방향으로 동작한다.
로컬좌표를 사용할려면 AddRelativeForce, transform.forward를 사용해야한다.
rb.AddForce(transform.forward * force);
Physics Manager
- Gravity: 입력된 축 방향으로 중력이 작용한다. 디폴트값은 현실의 중력 -9.81
- Default Material: 두 물체가 충돌했을 때 물리적인 반작용에 대한 속성을 전역적으로 설정한다.
- Bound Threshold: 충돌한 두 물체의 상대 속도가 이 값보다 작으면 충돌이 발생하지 않는다. (떨림효과를 감소시킴)
- Layer Collision Matrix: 사용자 정의 레이어간의 충돌 감지 여부를 선택적으로 활성화/ 비활성화 할 수 있다.
댓글남기기