오브젝트의 위치를 변경하고 싶을때 position 값을 바꾸게 된다.
그런데 rigidbody가 적용된 오브젝트를 움직일 때 궁금증이 생겼다.
transform.position과 rigidbody.position를 각각 수정해보았더니 두 값 모두 오브젝트를 이동시켰다.
그런데 특정 상황에서는 이동에 따른 결과가 다르게 나오기도 했다.
두 포지션값은 서로 차이가 없는걸까.
결론부터 말하자면 퍼포먼스와 이동되는 시점의 차이에 달려있다.
transform.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
'개발 > Unity' 카테고리의 다른 글
[Unity] 아이소메트릭 타일맵 공부 - (1) 타일 팔레트 설정하기 (1) | 2020.07.13 |
---|---|
[Unity] 공공데이터 API (REST) 연동하는 방법 - (2) (5) | 2020.07.01 |
[Unity] 공공데이터 API (REST) 연동하는 방법 - (1) (0) | 2020.06.28 |
게임 사운드 사이트 정리 (1) | 2020.06.26 |
[Unity] 프리팹 브러시 설치 방법 (0) | 2020.01.22 |