rigidbody2d 에서 Sleeping Mode 에 관하여.

rigidbody2d 에서 Sleeping Mode의 경우, 움직이지 않고 가만히 있게 되는 물체에 물리적인 시스템에 영향을 받지 않게 하는 기능이다. 움직이지 않는 위치에 놓인 개체에 다른 개체와 물리시스템에서 상호작용하게 하기 위해서는 (예를들어 다른 trigger와 ontriggerstay2d 등을 사용할때) 이 Sleeping Mode가 Never Sleep 으로 해주어야 한다.


Unity의 Rigidbody2D의 sleeping mode는 물리 시스템의 최적화를 위해 사용되는 기능입니다. Sleeping mode는 Rigidbody2D가 움직이지 않을 때 해당 객체를 "잠자게"하여 계산 부하를 줄이고 성능을 향상시킵니다.

Rigidbody2D의 sleeping mode에는 다음과 같은 세 가지 모드가 있습니다.

  1. Never Sleep (절대로 잠들지 않음):
    • Rigidbody2D가 언제나 활동 상태로 유지됩니다.
    • 이 모드에서는 Rigidbody2D가 움직이든 아니든 항상 물리 시뮬레이션에 참여하게 됩니다.
    • 최적화를 위해 사용되는 sleeping mode의 이점이 사라지므로 성능에 영향을 미칠 수 있습니다.

Rigidbody2D를 Never Sleep 모드로 설정하려면 다음과 같이 코드에서 설정할 수 있습니다.

Rigidbody2D rigidbody2D = GetComponent<Rigidbody2D>();
rigidbody2D.sleepMode = RigidbodySleepMode2D.NeverSleep;

그러나 항상 활동 상태로 유지하면서 물리 시뮬레이션에 계속 참여하기 때문에, 성능 이슈를 유발할 수 있습니다. 따라서 Never Sleep 모드를 사용할 때는 해당 선택이 성능에 어떤 영향을 미칠지 주의깊게 고려해야 합니다. 최적화를 위해 다른 sleeping mode를 사용하는 것이 일반적으로 좋습니다.


  Comments,     Trackbacks