정적인 GameObject의 움직임 처리 - Rigidbody 설정
Collier 가 있는 GameObject 가
리지드바디(Rigidbody) 가 없으면
움직이지 않을 정적 오브젝트로 취급이 된다.
유니티(Unity)에서는 정적오브젝트들을 모두 찾아
캐시에 저장하여 처리한다.
하지만 이런 정적인 오브젝트가
transform(Position, Totation, Scale)에 변화가 생기게 되면
유니티엔진은 다시 정적인 오브젝트들을 찾는 연산을 하게 된다.
만약 하나의 Cube 오브젝트를 생성하고
이 오브젝트를 계속 돌려 배경으로 삼는 다면
매 Frame 마다 정적오브젝트를 찾는 연산을 하므로
최적화된 게임을 만들수 없게 된다.
그렇다면 어떻게 해야 할까?
리지드바디(Rigidbody) 컴포넌트를
해당 GameObject에 추가해서 컨트롤 하면
정적인 오브젝트 취급을 받지 않게 된다.
Add Component 로 Rigidbody를 그냥 추가하게 되면
기본적으로 중력을 받게 설정되어 있으므로
문제가 될 수 있다.
그렇다고 Use Gravity 만 체크 해제 하면 될까?
아니다.
Rigidbody 는 물리력으로 움직이기 때문에
어떠한 다른 문제가 생길 지 모른다.
그리하여 그 아래에 is Kinematic 을 체크 해주는 것을 권장한다.
Kinematic 이 체크된 객체들은 모든 물리력에 반응 하지 않게되고
스크립트에서 transform을 이용하여 움직여도
정적 오브젝트에 의한 재검사가 일어나지 않아 문제가 되지 않는다.
보통 오브젝트 안에 다른 오브젝트가 들어가거나
얹게 되거나
트리거로 된 오브젝트, 고정된 배경 등등
Collider가 있지만 물리력 적용을
안시킬 객체들에 유용하게 쓰인다.
'공부 > Unity' 카테고리의 다른 글
Awake(), Start() 의 궁극적 차이 (0) | 2016.05.22 |
---|---|
Ctrl + Shift + m (MonoBehaviour 이벤트 함수 추가) (0) | 2016.05.22 |
GameObject 삭제, 활성, 비활성화 (0) | 2016.05.20 |
[잡담]유니티를 일주일정도 공부 하면서 드는 생각 (0) | 2016.05.19 |
태그(tag)로 찾기, 비교하기 (0) | 2016.05.19 |