Cocos2d x a to z (하)

12
week2 게게게게 cocos2d-x 게 게게 게게게게 게게

description

올라간다아아아아아 뭔가 atoz가 아닌것같지만

Transcript of Cocos2d x a to z (하)

Page 1: Cocos2d x a to z (하)

week2게임엔진 cocos2d-x 을 실제 사용하는 부분

Page 2: Cocos2d x a to z (하)

cocos2d-x 개발 시작하기• Getting

Started(http://cocos2d-x.org/wiki/Getting_Started_with_Cocos2d-x)• 그 외 실제 게임 튜토리얼은 손쉽게 찾아볼수 있다 .• 키워드는 cocos2d-x ninja game, cocos2d-x tutorial 정도로

찾아보면 쏟아져나오는 정보의 홍수를 맞이할수 있다 .

Page 3: Cocos2d x a to z (하)

cocos2d-x 각종 기능들 사용하기• Action, BillBoard, Box2d or Chipmunk, Particle, Shader, Scheduler.....

어느세월에 다 배우나 ?• cocos2d-x 프로젝트를 다운받으면 , 내부적으로 cpp-tests 라는

프로젝트에 모든 예제가 구현되어져 있다 . 참고하기도 좋게 만들어져있음 . cocos2d-x 의 큰 장점 중 하나

Page 4: Cocos2d x a to z (하)

cocos2d-x 에서 염두해둬야할 기본 개념• Position• 모든 Child Node 는 Parent Node 의 상대좌표로 배치된다 .• Anchor Point 를 기준으로 배치된다 .

• Anchor Point• 객체 자체의 기준이 되는 포인트다 .• 객체의 크기에 0~1 로 비례한다 .• Scale (1, 1), Position(0, 0) 인 객체의 Anchor Point : case1(0, 0), case2(1, 1)

으로 잡아주고 Scale(2) 했을시 객체의 크기• case 1 -> 객체는 Scale(2, 2), Position(0, 0), x(-1), y(-1), width(2), height(2) 가 된다 .• case 2 -> 객체는 Scale(2, 2), Position(0, 0), x(0), y(0), width(2), height(2) 가 된다 .

Page 5: Cocos2d x a to z (하)

cocos2d-x 를 조금 더 편리하게 사용하기 • spine (http://esotericsoftware.com/)• 스켈레톤 애니메이션 제작 툴• 자체 기능들은 3.x 버전부터 cocso2d-x 에 내장됨 .

Page 6: Cocos2d x a to z (하)

cocos2d-x 를 조금 더 편리하게 사용하기• Tiled (http://www.mapeditor.org/)• 타일 맵 툴• 타일 맵을 찍고 그것을 tmx 로 뽑아준다 .• cocos2d-x 내에서 손쉽게 사용 가능 .

Page 7: Cocos2d x a to z (하)

cocos2d-x 를 조금 더 편리하게 사용하기 • Physics Editor (https://www.codeandweb.com/physicseditor)• box2d 와 chipmunk 의 충돌 면을 손쉽게 만들어주는 툴

Page 8: Cocos2d x a to z (하)

cocos2d-x 에서 쉽게 마주할 실수와 해결법• 부모 노드와 자식 노드의 Positioning 문제 .• 두 노드는 서로 다른 차원에 존재하기때문에 상대적인 좌표를 쓴다 .• A->addChild(B); 의 상황일때 , A 와 B 각각의 (100, 100) 은 다른

위치일 수 있다는 것이다 ( 이것 또한 Anchor Point 에 따라 사소하게 달라진다 )• 이럴때 서로를 같은 차원에 놓기 위해서 convertToNodeSpace 또는

convertToWorldSpace 를 사용할 수 있다 .• ex) A->convertToNodeSpace(B); 를 하면 A 의 좌표계에서 B 의 위치를

알 수 있다 .• 자세한 사항 : http://www.cocos2d-x.org/wiki/Coordinate_System

Page 9: Cocos2d x a to z (하)

cocos2d-x 에서 쉽게 마주할 실수와 해결법 • convertToNodeSpace• ex) A->convertToNodeSpace(B); 를 하면 A 의 좌표계에서 B 의

위치를 알 수 있다 .• Parent Node - Child Node 간의 1 차원 정도의 차이를

메꾸는데 쓸 수 있음 .• 하지만 Parent Node 와 Child Node 의 Child Node 간의

좌표계를 맞추는데 에러 발생한다 .

Page 10: Cocos2d x a to z (하)

cocos2d-x 에서 쉽게 마주할 실수와 해결법 • convertToWorldSpace• 위 convertToNodeSpace 에서 발생할 문제를 해결할 수 있다 .• 모든 Node 의 Position 을 SCREEN! 좌표를 기준으로 변환해

리턴해준다 .• 위 함수를 사용하면 Parent Node 의 Position 이나 , Child Node 의

Child Node 의 Position 이나 동일한 차원에서 비교할 수 있게 된다 .

Page 11: Cocos2d x a to z (하)

cocos2d-x 에서 쉽게 마주할 실수와 해결법• 가끔 정상적으로 create 해주었고 , 값이 들어간걸 확인했는데

다음 프레임에 참조해보면 nullptr 이 뜨고 작동하지 않는 경우가 있다 .• 특정한 상황에서 발생하는 cocos2d-x 자체의 메모리 관리문제가

대부분이다 .• Sample scenario -

http://cocos2d-x.org/wiki/Reference_Count_and_AutoReleasePool_in_Cocos2d-x#An-Error-Sample• 이럴 경우가 발생하면 , 해당 오브젝트를 초기화하고 난 다음

retain() 을 걸어주면 해결된다 .

Page 12: Cocos2d x a to z (하)

뭐가 더 필요할까• 뭘 더 원하니