인디 게임 강좌

전체보기

모바일 상단 메뉴

본문 페이지

[코코스2D] [Box2D] #11 - 프릭션 조인트

아이콘 내폰젤무거워
조회: 2093
2017-07-09 10:13:32

Document Version : V1.3 - 2017.07.09 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


프릭션 조인트

커맨드창을 열어 원하는 디렉터리로 이동한 후에, 다음과 같이 cocos 명령어를 이용하여 새로운 프로젝트를 생성합니다.


c:> cocos new Box2dEx10 -p com.study.box10 -l cpp  ↵


Box2dEx04의 모든 코드를 방금 만든 Box2dEx10에 적용시킵니다.

Box2dEx04의 Classes 폴더의 다음 파일들을 Box2dEx10의 Classes 폴더에 덮어 쓰면 됩니다.


■ HelloWorldScene.h

■ HelloWorldScene.cpp

■ GLES-Render.h

■ GLES-Render.cpp



그러고 나서 다음의 디렉터리에서 

{Cocos2d-x가 설치된 디렉터리} / tests / cpp-tests / Resources / Images

아래의 파일을 찾아 리소스 폴더에 추가합니다.


■  blocks.png


Box2dEx10은 Box2dEx04 - 마우스 조인트까지 적용된 상태에서 시작합니다.



헤더 부분은 변경된 점이 없습니다.

[ HelloWorldScene.h  박스2D 프릭션 조인트 ]

     생략 : Box2dEx04의 코드와 같음 




다음은 프릭션 조인트 프로젝트에서 Box2dEx04와 달라진 코드 부분입니다.
setBox2dWorld 메서드에서 프릭션 조인트를 생성하는 부분만이 추가되고 다른 것은 변한 것이 없습니다.

[ HelloWorldScene.cpp – 박스2D 프릭션 조인트 ]

     생략 : Box2dEx04의 코드와 같음 


void HelloWorld::setBox2dWorld()

{

    // 마우스 조인트 바디를 생성해서 월드에 추가한다.

    bDrag = false;

    gbody = this->addNewSprite(Vec2(00), Size(00), b2_staticBodynullptr0);


    // *****************************************************************************


    b2FrictionJointDef frictionJointDef;


    b2Body* body1 = this->addNewSprite(Vec2(240280), Size(4040),

                                                                 b2_dynamicBody, "test"0);

    b2Body* body2 = this->addNewSprite(Vec2(340280), Size(4040),

                                                                 b2_dynamicBody, "test"0);


    frictionJointDef.Initialize(body1, body2, body1->GetPosition());

    frictionJointDef.maxForce = 20;

    frictionJointDef.maxTorque = 10;


    _world->CreateJoint(&frictionJointDef);

}


     생략 : Box2dEx04의 코드와 같음 




프릭션 조인트는 디스턴스 조인트와 유사하게 서로 거리를 유지하는 용도이지만 두 바디 사이의 연결에 고무줄을 사용한 것이라고 생각할 수 있는데, 조인트데프에 정의한 힘이나 회전력에 의해 늘어나는 효과가 있습니다.



















Lv28 내폰젤무거워

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징