Rigidbody Sleeping

Rigidbodies가 쉬기 위해 떨어질 때 – 바닥위의 박스 랜딩 – 그들은 잠자기 시작할 것입니다. 자는 것은Physics Engine이 그러한Rigidbodies을 프로세싱하는 것을 멈추게하도록 하는 최적화 입니다. 이런 방법으로 사용자는 그들이 보통 움직이지 못한다는 것을 확실시하는 한 사용자의 씬에서rigidbodies의 엄청난 양을 가질 수 있습니다.

Rigidbody 잠자는 것은 완전히 자동으로 일어납니다. 하나의Rigidbody가sleepAngularVelocity과 sleepVelocity보다 더 느릴 때 잠드는 것을 시작할 것입니다. 휴식하는 것의 몇 프레임 후에 그것은 잠들 것입니다. 몸체가 잠자고 있을 때 충돌 감지 또는 시뮬레이션이 더이상 실행되지 않을 것입니다. 이것은 더 많은 CPU 싸이클을 구합니다.

Rigidbodies은 다음의 경우에 자동으로 깨어납니다:

  • 또다른rigidbody가 잠자는rigidbody와 충돌합니다
  • 조인트를 통해서 연결된 또다른rigidbody가 움직이고 있습니다.
  • Rigidbody의 속성을 변경할 때
  • adding forces할 때.

그래서 사용자가rigidbodies가 쉬러 떨어지도록 만들고 싶다면 그들의 속성을 변경하지 않거나 그들이 잠자는 모드로 들어가려고 할 때 힘을 추가합니다.

사용자가 사용자의rigidbodies가 자동적으로 쉬러가는 것을 확인하기 위해 튜닝할 수 있는 두 가지의 변수가 있습니다: Rigidbody.sleepVelocityRigidbody.sleepAngularVelocity. 이러한 두 개의 변수는 Physics Manager에서 정의된 sleepVelocity와sleepAngularVelocity 변수로 초기화 됩니다. (Edit → Project Settings → Physics).

Rigidbodies는 rigidbody.Sleep을 사용해서 잠자도록 강요될 수 있습니다. 이것은 새로운 레벨이 로딩할 때 쉬는 상태에서rigidbodies를 시작하는 데 유용합니다.

운동학적인rigidbodies는 잠자는rigidbodies를 깨웁니다. 정적인 Colliders는 그렇게 하지 않습니다. 사용자가 잠자는rigidbody를 가지고 사용자가 정적인collider를Rigidbody로 움직이거나Rigidbody 밑으로 부터 그것을 잡아 당긴다면 (부착된Rigidbody 없는 collider) 잠자는Rigidbody는 깨_지 않_을 것입니다. 사용자가 운동학적인Rigidbody을 그것의 위에서 쉬고 있는 보통의Rigidbody 아래로부터 움직이게 한다면 잠자는Rigidbodies는 일어날 것이고 물리적인 업데이트에서 다시 제대로 계산될 것입니다. 그래서 사용자가 주위를 움직이기를 원하는 많은 정적인 Colliders를 가지고 그들 위로 다른 물체들을 떨어뜨리게 한다면 운동학적인Rigidbody Colliders를 사용하시기 바랍니다.

운동학적인Rigidbodies – 그들은 그들이 다른 곳으로 가지 않는 이래로 물리적인 업데이트 동안에 계산되지 않을 것입니다. 사용자가 운동학적인Rigidbody를 그것의 위에서 쉬고 있는 보통의Rigidbodies 아래로 부터 움직이게 한다면 잠자는Rigidbodies는 " 일어날 "것이고 물리적인 업데이트에서 다시 올바르게 계산될 것입니다. 그래서 사용자가 주위를 움직이기를 원하는 많은 정적인 Colliders를 가지고 그들 위로 다른 물체들을 떨어뜨리게 한다면 운동학적인Rigidbody Colliders를 사용하시기 바랍니다.

역링크