2014. 11. 3.

유니티에서 캐릭터의 Rigidbody rotation 고정하기

게임을 만들다보면, 캐릭터가 넘어지는걸 방지해야할 경우가 있습니다. 넘어진다는건 오브젝트의 Rotation 값이 변한다는걸 의미하는데, 이 Rotation 값만 변하지 않도록 고정시켜주면, 캐릭터가 더 이상 넘어지지 않을 것입니다.

유니티 3D에서는 Rigidbody를 고정하기 위해서 Freeze Rotation 속성을 이용합니다.
Rigidbody 컴포넌트 안에 있는 속성으로 x, y, z 축을 bool 형태로 지니고 있습니다. 체크를 해주면, 값이 고정이 되어 더 이상 체크된 축의 rotate 값이 변하지 않습니다. 위의 그림에서는 탱크는 넘어지는것이 필요하기에 Freeze Rotation이 전부 해제가 되어있습니다.

유니티 2D에서는 Rigidbody2D가 사용되는데, 이 컴포턴트는 Freeze Rotation 속성이 존재하지 않습니다. 2D다 보니 x,y,z 축을 각각 조절하는 것이 아닌 Fixed Angle이라는 속성을 통해 x,y의 Rotation만 고정시켜 버립니다.
2D인만큼 좀 더 편리하게 만든 기능 같은데 이 때문에 기존의 Rigidbody의 Freeze Rotation을 찾던 사람들은 더 시간을 소비하게 되는 결과가 발생했습니다. 위 그림처럼 Fixed Angle에 체크를 해주시면, 캐릭터의 Rotation값이 고정되어, 어떤 상황에서도 꿋꿋하게 서 있습니다.

0 개의 댓글:

댓글 쓰기