RigidBody
- 물리학 용어 : 외력을 가해도 크기나 형태가 변하지 않는 이상적인 물체
- 아주 큰 힘을 받지 않는 한 부서지지 않는 대부분의 고체는 강첼로 간주한다.
Mass (질량 float Type)
- 상대적인 의미의 질량으로 1Kg, 1g 등의 무게가 아님
- 편의상 1Kg으로 가정
Drag (이동 마찰 계수 float Type)
- 이동할 때 적용되는 마찰계수 (저항)
Angular Drag (회전 마찰 계수 float Type)
- 회전할 때 적용되는 마찰계수 (저항)
Use Gravity (중력 bool Type)
- 중력의 적용 여부
Is Kinematic (물리엔진 적용 여부 bool Type)
- true 일때, 물리 시뮬레이션의 영향을 받지 않고, transform 컴포넌트를 이용해 이동
Interpolate (물리력 보간 Select Type)
- 물리력을 이용한 움지김이 끊어지는 현상이 발생할 때 보간 (Interpolate)
Interpolate : 이전 프레임의 Transform에 맞게 움직임을 부드럽게 보간 처리
Extrapolate : 다음 프레임 Transform 변화를 추정해 움직임을 부드럽게 처리
Collision Detection (충돌 감지 Select Type)
- CCD : Conituous collison detection
- 아주 빠른 물체는 물리 엔진이 충돌 검출을 놓칠 수 있음
- 좀 더 세밀한 충돌을 검출하기 위한 옵션
Discrete (이산)
- 기본적인 충돌 감지 방식
- 프레임마다 한 번씩 충돌을 확인
- 빠르게 움직이는 객체의 경우에는 “터널링”문제가 발생할 수 있음
❗️”터널링” : 객체가 빠르게 움직여 프레임에서 프레임으로 아동하는 동안 다른 객체를 완전 통과하는 형상
Continuous (연속)
- 가장 정확한 충돌 감지 방식
- 객체의 이동 경로를 통해 프레임 사이의 모든 가능한 충돌을 감지
- 빠르게 움직이는 객체에 주로 사용
Continuous Dynamic (연속 동적)
- 연속 충돌 감지는 동젝 객체에만 적용 (Continuous )
- 정적(static), Kinematic 객체에 대해서는 이산 충돌 감지 적용 (Discrete)
Continuous Speculative (연속 추측)
- 성능 최적화를 위해 추가된 방식
- 실제 이동보다 약간 앞선 위치에서의 예측된 충돌을 기반으로 감지
- 일반적으로 터널링 문제를 방지 및 높은 성능 유지를 위해 사용
💥 총알과 같은 객체는 Continuous or Continuous Speculative 를 적용
Freeze Position
x, y, z 축 중에서 해당 축으로의 이동을 막음
Freeze Rotation
x, y, z 축 중에서 해당 축을 기준으로 회전을 막음
AddForce / AddRelativeForce
void AddForce(Vector3 force);
void AddRelativeForce(Vector3 force);
- 두 함수 모두 Rigidbody 컴포넌트를 받아 실행할 수 있음
- AddForce의 경우 월드 좌표 기준으로 힘을 가함
- AddRelativeForce의 경우 로컬 좌표 기준으로 힘을 가함
// 월드 좌표 AddForce
_rb.AddForce(transform.forward * force);
// 로컬 좌표계 AddRealativeforce
GetComponent<RigidBody>().AddRelativeForce(Vector3.forward * force);