개발/Unity

[유니티 궁금증] transform.position과 rigidbody.position 의 차이

센솔 2020. 6. 24. 15:59

 오브젝트의 위치를 변경하고 싶을때 position 값을 바꾸게 된다.

 

그런데 rigidbody가 적용된 오브젝트를 움직일 때 궁금증이 생겼다.

transform.position과 rigidbody.position를 각각 수정해보았더니 두 값 모두 오브젝트를 이동시켰다. 

그런데 특정 상황에서는 이동에 따른 결과가 다르게 나오기도 했다.

 

두 포지션값은 서로 차이가 없는걸까.

 

결론부터 말하자면 퍼포먼스와 이동되는 시점의 차이에 달려있다.

 

transform.position 을 사용할 경우

  • 오브젝트의 위치가 즉시 순간이동된다.
  • 순간이동됨과 동시에 연결된 모든 콜라이더들이 리지드바디의 위치를 다시 계산하게 된다.
  • 퍼포먼스가 저하된다

rigidbody.position 을 사용할 경우

  • '다음 물리 시뮬레이션 단계' 이후에 오브젝트의 위치가 순간이동된다
  • 이미 시뮬레이션 계산이 이루어졌기 때문에 더 나은 속도와 퍼포먼스를 보여준다.

 

여기까지가 대략적으로 이해한 내용이다. 

 

 

유니티 공식문서-Rigidbody.position

 

Unity - Scripting API: Rigidbody.position

Rigidbody.position allows you to get and set the position of a Rigidbody using the physics engine. If you change the position of a Rigibody using Rigidbody.position, the transform will be updated after the next physics simulation step. This is faster than

docs.unity3d.com

 

참고한 블로그

 

[유니티]Rigidbody. position과 MovePosition()의 차이와 성능. 그리고 결론?

스크립트 최적화에 간단히 쓸 생각이었다가 깜박 잊었다. 처음 유니티 배울 때 position과 MovePosition(...

blog.naver.com