본문 바로가기

유니티

[유니티/Unity] Rigidbody2d body type

반응형


이번 포스팅 주제는 유니티에서 제공하는 컴포넌트 rigidbody2d입니다.

2d 오브젝트인 sprite를 물리엔진(중력, 힘)의 영향을 줄 수 있습니다.

더불어 collider와 함께 사용하면 오브젝트간 충돌을 표현할 수 있습니다.



해당 포스팅은 유니티 공식 문서를 참고했습니다. 


body type 

dynamic : 디폴트 타입으로 다른 body type과 모두 충돌하고 중력과 힘의 영향을 받습니다.

위치나 회전값을 동적(코드)으로 변경하는 오브젝트에 사용하기엔 비효율 적입니다. ( 시스템 리소스 문제 ) 

  • mass : 오브젝트의 질량을 설정합니다.
  • linear drag : 해당 값이 클수록 물체의 이동에 영향을 줍니다. 다른 오브젝트와 접촉이 없어도 스스로 움직임을 멈춥니다.
  • angular drag : 해당 값이 클수록 물체의 회전에 영향을 줍니다. 다른 오브젝트와 접촉이 없어도 스스로 회전을 멈춥니다.
  • collision detection : discrete, continuous 중 continuous 로 설정한 경우 충돌된 물체끼리 서로를 통과하지 않지만 더 많은 cpu 시간을 사용해 꼭 필요한 오브젝트에만 설정해야합니다.


kinematic : 동적(코드)으로 제어하는 오브젝트에 적합한 타입입니다. 중력과 힘의 영향을 받지않기 때문에 동적(코드)으로 제어 했을때 정확하게 반영됩니다. dynamic 타입을 갖는 오브젝트와 충돌하고 그외 나머지 kinematic 과 static 타입과는 충돌하지 않습니다.

  • use full kinematic conta : 해당 옵션을 체크하면  dynamic 타입이 아닌 모든 타입의 오브젝트와 충돌하게 되지만 충돌 후 물리엔진에 영향을 받지 않습니다.


static : 움직이지 않는 오브젝트에 적합한 타입입니다.


이 세가지 타입을 오브젝트 성질에 맞게 설정해야 리소스를 덜 잡아먹어 최적화에 도움이 됩니다.


예를 들어 게임에서 움직이지 않고 정적인 블럭은 static 타입으로 설정하고, 움직이는 플레이어의 경우 dynamic이나 kinematic으로 설정하는게 좋습니다. 




해당 포스팅은 지극히 주관적인 내용으로 저자의 복기 목적으로 작성된 것이고, 내용에대해 수정이나 추가 요청은 언제든 환영합니다. 





반응형