본문 바로가기
프로그래밍/Unity

Unity3d Hinge Joint 경첩 관절을 이용한 테스트하기

by 메르세데쓰 2015. 4. 23.
반응형


안녕하세요 메르세데스입니다.   [유니티 게임 프로그래밍] 책으로 열심히 공부하고 있는데요..      이번시간에는  Hinge Joint라는 컴포넌트를  이용하여 경첩과 같은 효과를 내는 것에 대한 예제를 해 보려고 합니다.


그런데 Unity가 5.0으로 올라오면서 잘 안맞는 부분이 있어서 많이 헤메게 되었네요.. 책은 4.5버전이어서..     작년에 나오자마자 바로 구매하긴 하였는데 공부가 늦어지고 있어서 그렇답니다.


아무튼 변경된 사항에 대하여 약간의 시행 착오를 거쳐 잘 되긴합니다.


예제는 별것은 아니고..  아래 그림과 같은 U자형의 구조를 만들고..  Rigidbody 물리컴포넌트를 붙인 큐브들을 떨어뜨릴때..  경첩이 달린 문처럼.. 바닥면의 한쪽 부분을 떨어뜨려  아래로 주루룩~  내려가게 방법입니다.


Unity3d Hinge Joint  example


일단.. 좌 우의 벽들은.. 고정시켜 움직이지 않도록  UseGravity설정을 false로  Constraints의 모든 설정을 체크하여 Freeze 시킵니다. 


이렇게 해놓으면..  꼼짝않고 움직이지 않겠죠..?



Unity3d Hinge Joint  example


 그리고 경첩처럼 작동할.. 아랫부분의 경우..    Hinge Joint Component를 붙어넣고..  기준이될 Body를 연결해 놓습니다.   


아래의경우 Left라는 이름의 게임오브젝트를 연결해 놨는데요.. 위에서 설정한 왼쪽벽이죠.. 이렇게 연결을 해 놓으면..  


정상적으로 작동한다면.. Bottom Object가.. 왼쪽 부분은 붙어있는채로 문이 열리듯이 아래로 내려 가겠죠?


Unity3d Hinge Joint  example


또한..  Hinge Joint기능을 제어하기 위한.. 스크립트를 하나 만들어보겠습니다.   만들어놓은.. Bottom GameObject에 붙였고요..

책의 예제에서는.. RayCast를 이용하여  처리하였는데..   저는 간단하게.. GUI버튼을 눌러서 이벤트가 실행되도록 변경해서 해보겠습니다.



화면 왼쪽부분에 버튼을 두개 만들어서.. 클릭하였을때..    각종 옵션값들을에 대한 변화를 아래처럼 주었습니다.  


근데 한참 헤멧던 부분이 있었는데..  위에 보이는 화면 중.. Connected Anchor이라는 부분 때문에 그렇습니다.   기준이 되는 body의 좌표값기준으로 위치가 조정되기때문에  0,0,0 으로 할경우.. 갑자기 bottom object가 갑자기 가운데로 올라가버리죠?    제가 원하는 것은.. 왼쪽 벽의 아랫부분이 기준이 되는 것 이거든요.. 아무튼 좌표값을 수정하여 해결 하신 후..


Unity3d Hinge Joint  example


GUI 버튼중 위엣 것은  HingeJoint Component를 찾아서 설정을 적용시키는 것이고..

아래 버튼은..  공중에 떠있는 큐브에 중력 적용옵션을 활성화시키는 기능을 넣었습니다.    GetComponentInChildren 이런 식으로 찾는다면.. 부모하단의 것들을 뒤져서 Rigidbody컴포넌트가 있는것들을 할당해줍니다.

loop문으로  찾은 수량만큼 옵션을 적용하였습니다.



Unity3d Hinge Joint  example



이렇게 설정을 완료한 후 Play를 하였더니.. 위의 화면처럼 원하는 결과를 얻었네요..  





반응형

댓글