UNITY

[UNITY] Rigidbody - useGravity, isKinematic 접근하기

멍정 2022. 1. 8. 20:38

GameObject의 물리 엔진을 동작하게 하는 Rigidbody!!

그 중에서 개인적으로 가장 자주 사용하는건 Use Gravity이다. (Is Kinematic은 그냥 같이..)

Rigidbody

유니티 매뉴얼을 보면

Use Gravity 활성화되면 오브젝트는 중력의 영향을 받습니다.
Is Kinematic 활성화되면 오브젝트는 물리 엔진으로 제어되지 않고 오로지 Transform 으로만 조작됩니다. 플랫폼을 옮기는 경우나 HingeJoint 가 추가된 리지드바디를 애니메이션화하는 경우에 유용합니다.

이런식으로 설명이 나와있는데 나는 '일정 상황에서 오브젝트의 이동을 멈출 때(고정할 때)' 두 옵션을 사용했다.

 

인게임에서 상호작용 하려면 일정 조건에서 Use Gravity랑 Is Kinematic에 접근해야한다.

Rigidbody Rigid;

void Start()
{
	Rigid = GetComponent<Rigidbody>(); //Rigid 변수에 Rigidbody 컴포넌트 정보 전달
	Rigid.useGravity = false; // 끄기
	Rigid.isKinematic = true; //켜기
}

사용 방법은 Rigidbody 변수를 만들어서 직접적으로 true, false로 변경해준다.

이 스크립트는 시작하자마자 중력이 꺼지고 물리 엔진으로 이동할 수 없게된다.

 

사용예시

//오브젝트가 충돌하면 중력을 끄고 물리효과를 받지 못하게 해라

void OnCollisionEnter(Collision collision)
{
	Rigid.useGravity = false;
	Rigid.isKinematic = true;
}