Today I Learned - Day 32 [Rigidbody - Dynamic/Kinematic/Static]
Rigidbody는 유니티엔진에서 지원하는 물리 법칙을 시행하는 주체가 되는 컴포넌트다.
그렇다 보니 2D에서도 3D에서도 매우 중요한 요소로 손꼽히는 요소다.
그렇다면, 이제 Rigidbody에서 가장 중요한, body type에 대해서 알아보자.
Rigidbody의 물리법칙 종류는 다음과 같다.
- Dynamic
- Kinematic
- Static [Rigidbody 2D 한정]
이제, 각 요소에 대해서 정리해 보자.
Dynamic [동적]
이름에서 알 수 있듯이, 물리법칙이 온전히 적용되는 물체방식이다. 때문에 무게 차이에 의한 밀려남이나 속도, 속력 등이 온전히 적용된다. 반대로, 그렇기 때문에 고정된 이동이나 회전을 그려내기에는 난점이 많다.
Dynamic 관련 속성들
- mass: 오브젝트의 질량. 이에 따라서 해당 물체에 적용되는 물리법칙의 영향이 달라진다.
- 무거운 물체가 가벼운 물체에 비해서 적게 밀려난다.
- 질량이 적용되는 방식의 AddForce로 인한 이동량 변화가 무게에 반비례한다.
- Drag [Linear Drag]: 이동에 대항 저항력. 값이 높을 수록 이동을 멈추는 성질이 강하다.
- Angular drag: 회전에 대한 저항력. 값이 높을 수록 회전을 멈추는 성질이 강하다.
Kinematic [운동학]
물리법칙이 적용되지 않고, 위치가 고정되는 방식. 단, transform 변경을 통한 이동이나 회전은 가능하다.
[2D에서는 Rigidbody2D의 내부 함수에 관련 기능이 존재한다.]
플랫폼이나 벽 같이 물리법칙의 대상이긴 하지만 고정되어야 하는 경우에 쓰기 좋은 방식.
충돌 판정 또한 Dynamic하고만 발생한다.
Rigidbody는 그저 isKinematic 체크 여부로 결정되기에 Mass나 Drag 등을 설정할 수 있으나, 물리법칙이 적용되지 않기 때문에 영향은 없다.
Static [정적]
Rigidbody2D에만 존재하는 body type. 그 어떤 이동도 하지 않는 경우에 적합하다.
그런 만큼 사용 빈도는 가장 낮은 편.
추가로 Constraints에 대해서도 정리해 보자.
Constraints는 Transform의 특정 값을 고정하는 옵션으로, 체크된 요소들은 해당 값이 고정된 채로 변동되지 않는다.
- Freeze Position: 좌표를 고정한다. 회전을 막지는 않는다.
- Freeze Rotation: 회전을 막는다. 좌표는 고정되지 않는다.
2D는 Freeze Position은 x와 y, Freeze Rotation은 z만 존재하고, 3D는 둘 다 x, y, z가 존재한다.
이 수치를 잘 조합하면 특정 방향으로만 움직이는 물체나 특정 방향으로만 돌아가는 발판 같은 것도 제작이 가능하다.
단, '물체의 방향을 기준으로 하지는 않는다'는 점은 주의할 것.