인디 게임 강좌

전체보기

모바일 상단 메뉴

본문 페이지

[코코스2D] [Box2D] #04 - 조인트(Joint)의 종류

아이콘 내폰젤무거워
조회: 3471
2017-07-04 22:40:26

Document Version : V1.3 - 2017.07.04 with cocos2d-x 3.15.1

Document Version : V1.2 - 2015.06.08 with cocos2d-x 3.6

Document Version : V1.1 - 2014.03.14 with cocos2d-x 3.0beta2

Document Version : V1.0 - 2013.07.10 with cocos2d-x 2.1.4


제 책인 "시작하세요! Cocos2d-x 3.0 프로그래밍" 내용을  3.15.1 버전에 맞게 수정하여 올리고 있습니다.

이 글은 네이버카페 "Cocos2d-x 사용자 모임"에 동시에 게재되고 있습니다.

 

개발환경 : 

  • Windows7
  • Visual Studio Community 2017
  • Cocos2d-x 3.15.1
  • 사용 프로젝트 : proj.win32


조인트(Joint)

조인트란 두 바디 사이를 연결하는 객체입니다. 연결하는 방식에 따라 다양한 종류의 조인트가 있는데 박스2D에서는 다음과 같이 10개의 조인트를 제공하고 있습니다.

 종류 설명
  마우스 조인트
  Mouse Joint

 마우스로 화면을 클릭하면 이 클릭한 위치와 바디를 연결해 주는 조인트이다.
 박스2D에서 바디를 드래그&드롭할 때 주로 사용된다.

  리볼류트 조인트
  Revoute Joint
 두 바디 사이를 볼트 형태로 연결한다.
 괘종시계의 시계 추와 같은 진자 운동을 표현할 수 있다.
  웰드 조인트
  Weld Joint
 두 바디 사이를 용접하듯이 붙인다. 
  프리스마틱 조인트
  Prismatic Joint
 두 바디 사이를 주어진 직선 방향으로만 이동할 수 있도록 연결한다.
 피스톤 운동이나, 엘리베이터처럼 주어진 방향으로만 이동이 가능하다.
  디스턴스 조인트
  Distance Joint
 두 바디 사이의 거리를 일정하게 유지하는 연결이다.
 두 바디 사이의 연결에 단단한 철봉을 사용한 것이라고 생각할 수 있다.
 
 두 연결 사이의 거리가 항상 일정하고 변하지 않는다.
  로프 조인트
  Repe Joint
 디스턴스 조인트와 유사하게 서로 거리를 유지하는 용도이지만
 두 바디 사이의 연결에 고무줄을 사용한 것이라고 생각할 수 있다.
 두 연결 사이의 거리가 줄어든다.
  프릭션 조인트
  Friction Joint
 디스턴스 조인트와 유사하게 서로 거리를 유지하는 용도이지만
 두 바디 사이의 연결에 고무줄을 사용한 것이라고 생각할 수 있다.
 두 연결 사이의 거리가 늘어난다.
  풀리 조인트
  Pulley Joint
 도드레 조인트로 두 바디 사이의 힘의 균형에 따라 움직인다.
  기어 조인트
  Gear Joint
 톱니바퀴가 서로 연결되어 있는 것처럼 동작한다.
  휠 조인트
  Wheel Joint
 자동차 바퀴처럼 원 운동을 하는 것처럼 동작한다.


[ 추가 설명 ]

조인트를 쉽게 이해하려면 다음의 예를 보겠습니다.

팔은 팔꿈치를 기준으로 위 아래로 나눌 수 있습니다.
이렇게 두개의 바디(물리 오브젝트)를 연결하는 팔꿈치는 조인트라고 볼 수 있습니다.

그리고 조인트를 기준으로 물리적 운동의 제한이 걸립니다.
접힐때에도 완전히 접히지 않지만 펴질 때에도 180도 이상 펴져서 일자로 펴지는 것 이상 넘어가지 않습니다.
(부러졌을 경우를 제외하고...)
이런 경우에 Box2D에서는 리미트란 용어를 사용합니다.

이번엔 시침, 분침, 초침이 있고 시계추가 있는 벽시계를 예로 보겠습니다.
시침, 분침, 초침을 시계에 연결하는 중심점은 조인트라고 볼 수 있습니다.
처음에 정지해 있는 시계에 건전지를 끼웁니다. 그러면 시계가 돌아가기 시작합니다.
이럴 경우 Box2D에서는 모터를 enable 시켰다란 용어를 사용합니다.
시계의 시침, 분침, 시침은 일정하게 돌아갑니다.
이때 Box2D에서는 토크, 즉 회전력은 일정하다고 말합니다.

그러나 자동차의 경우 엑셀을 밟으면 토크, 즉 회전력은 증가하게 됩니다.
즉 토크가 증가하면 회전력이 증가하고 회전의 속도가 빨라지게 됩니다.




Lv28 내폰젤무거워

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징