[Unity] rigidbody.MovePosition과 rigidbody.Position 그리고 transform.Position 차이 (부제: 쯔꾸르식 플레이어 이동)
2D 게임을 제작하던 중, Player의 콜라이더가 상대의 콜라이더에 닿였을 때 덜덜 떨리는 현상이 있었음.
이 현상을 없애고 싶어서 열심히 구글링을 하던 중, rigidbody.MovePosition이라는 것을 처음 봤음.
그래서 찾아보니깐, 매우 쓸모가 많을 것 같아서 적어봄.
(여러 블로그 참고해서 짬뽕해서 적음. 내가 나중에 보는 것이 목적이기 때문에 포스팅이 구릴 수 있음.)
참고한 블로그는 아래에 적어두겠음. 내 허접이 블로그보다 다른 천재 블로그들의 글을 읽는 것이 더 좋을 것...
일단 해결한 코드!!.
transform.Position와 rigidbody.Position의 차이
transform.Position
오브젝트의 위치가 즉시 이동. 그 후에, 연결된 모든 콜라이더들이 rigidbody의 위치를 다시 계산을 함.
rigidbody.Position
물리엔진이 적용된 리지드 바디를 얻을 수 있음.
rigid.Position을 이용하여 위치 변경한다면, 시뮬레이션 계산 후에 위치(transform)가 변경됨
유니티 공식 문서에 따르면, rigid.Position을 이용하는 것이 Transform.Position을 사용하는 것보다 빠르다고 함
Transform.Position은 부착된 모든 콜라이더가 rigidbody의 위치를 다시 계산을 하기 때문.
(10배 이상 빠르다고 함;;)
암튼 rigid.Position으로 지속적으로 움직이려면 MovePosition을 이용하라고 적혀있음.
rigidbody.MovePosition
rigidbody.MovePosition을 이용하여 이동
리지드 바디를 이용하여 보간을 사용하며 이동하고 싶으면, MovePosition을 사용하면 됨.
매프레임 렌더링 사이에 자연스러운 이동을 할 수 있음.
transform.position 보다 RigidBody.MovePosition 이 더 부드럽게 이동함.
그 이유는 Rigidbody의 Interpolate 때문이다.
http://egloos.zum.com/metashower/v/9660975
(다른 지점으로 순간이동하고 싶으면, 그때 transform.position을 사용하면 됨.)
암튼..
transform.Position을 계속해서 이동할 바엔 MovePosition을 사용하자~
참고 블로그
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
https://sensol2.tistory.com/10
[유니티 궁금증] transform.position과 rigidbody.position 의 차이
오브젝트의 위치를 변경하고 싶을때 position 값을 바꾸게 된다. 그런데 rigidbody가 적용된 오브젝트를 움직일 때 궁금증이 생겼다. transform.position과 rigidbody.position를 각각 수정해보았더니 두 값 모
sensol2.tistory.com
https://godnr149.tistory.com/68
MovePosition
RigidBody . MovePosition (Vector3 position) target 지점이 되는 position 으로 RigidBody를 이동시킨다. transform.position 보다 RigidBody.MovePosition 이 더 부드럽게 움직이게 해준다. ( RigidBody의 Interpolate 옵션 때문 ) ( Ref
godnr149.tistory.com
https://blog.naver.com/sabotduke/220802330662
[유니티]Rigidbody. position과 MovePosition()의 차이와 성능. 그리고 결론?
스크립트 최적화에 간단히 쓸 생각이었다가 깜박 잊었다. 처음 유니티 배울 때 position과 MovePosition(...
blog.naver.com