Hinge Joint 2D를 이용한 물리적인 기계 움직임의 구현

  물리적인 움직임을 가지는 물체는 게임에서 사실감을 줄 수 있는 소재로 사용 가능하다. 단순한 움직임을 가지는 일반적인 움직이는 플랫폼보다 복잡하고 섬세한 움직임을 가지기도 해 플랫포머 게임에서 적절한 구간에서 사용한다면 특이하고 흥미로운 스테이지 구성이 가능하다.

 Hinge Joint 2D는 두 리지드바디를 한 점에서 이어주는 속성이다. 해당 축을 기준으로 각각의 리지드바디는 회전이 가능하고, 다른 물체의 물리적인 움직임에 영향을 받기도 한다. 모터를 이용해 자동으로 닫히는 문이나 지속적인 회전 운동을 하도록 만들 수 있고, 여닫히는 각도 또한 제한할 수 있다. 이 속성으로는 단순히 흔들리는 물체를 만드는 것부터 사슬이나 복잡한 기계장치 등까지 다양한 응용이 가능하다.



 위 예시는 유니티 기본 컴포넌트인 Hinge Joint 2D를 이용해 기초적인 기계 운동을 구현한 것이다. 원운동을 직선 운동으로 바꾸는 기계 원리들을 사용했다. (사족으로, 아직 그래픽 작업을 완료하지 못한 상태로 기능만을 만들어두었다.)

 곡면 왕복 운동: http://507movements.com/mm_158.html

 직선 왕복 운동: http://507movements.com/mm_166.html

 상세한 내용은 다소 차이가 있지만 각각의 움직임은 위 링크의 원리들과 동일하다.  



 곡면 왕복 운동 파트는 위 그림의 구성과 같다. 빨간색의 원으로 표시된 것들은 인접한 오브젝트와 연결된 힌지를 나타낸다. Arm1의 오른쪽은 WaterWheel과 연결되어있다. Support 오브젝트는 움직이지 않고 Arm2의 위치를 고정해주는 역할을 한다.

 흰색 원은 큰 바퀴의 힌지로, 어느 곳에도 연결되지 않아 회전축으로 사용되며, 모터 속도가 설정되어 있어 지속적으로 회전한다.

 Platform 오브젝트는 플레이어가 올라서야 하는 부분이다보니 힌지로 인해 자유로이 회전하면 플레이에 문제가 발생할 수 있기에 Z회전 고정 설정을 해두었다.



 선형 왕복 운동 파트 역시 위에 명시된 원리대로 설계한 뒤 각각의 리지드바디를 힌지조인트로 연결해 만들어내었다. Rail과 Arm2에 콜라이더를 설정하여 레일을 따라 직선 운동이 가능하도록 했다. 파란 원은 정상적인 운동이 가능하도록 힌지의 각도에 제한을 두어 일정 각도 이상으로 회전할 수 없도록 했다.


  이처럼 Hinge Joint 2D를 이용하면 각종 기계적 운동을 구현해낼 수 있다. 기계 원리 모형은 수백가지가 넘고, 각각은 모두 다른 움직임을 가진다. 어떤 것은 유니티로 구현하기 어려울 수 있으나 몇몇 모형은 앞선 방법을 이용해 얼마던지 구현해 낼 수 있을 것으로 보인다. 적재적소에 이와 같은 요소를 배치하는 것도 게임을 더욱 풍부하게 만드는 요소가 아닐까 생각한다.


참고할 만한 사이트: http://507movements.com/





댓글 쓰기

0 댓글