2. cocos2d-x 개발 시작하기
• Getting Started(http://cocos2d-x.
org/wiki/Getting_Started_with_Cocos2d-x)
• 그 외 실제 게임 튜토리얼은 손쉽게 찾아볼수 있다.
• 키워드는 cocos2d-x ninja game, cocos2d-x tutorial 정도로 찾아보면
쏟아져나오는 정보의 홍수를 맞이할수 있다.
3. cocos2d-x 각종 기능들 사용하기
• Action, BillBoard, Box2d or Chipmunk, Particle, Shader, Scheduler.....
어느세월에 다 배우나?
• cocos2d-x 프로젝트를 다운받으면, 내부적으로 cpp-tests라는
프로젝트에 모든 예제가 구현되어져 있다. 참고하기도 좋게
만들어져있음. cocos2d-x의 큰 장점 중 하나
4. 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)가 된다.
5. cocos2d-x를 조금 더 편리하게 사용하기
• spine (http://esotericsoftware.com/)
• 스켈레톤 애니메이션 제작 툴
• 자체 기능들은 3.x버전부터 cocso2d-x에 내장됨.
6. cocos2d-x를 조금 더 편리하게 사용하기
• Tiled (http://www.mapeditor.org/)
• 타일 맵 툴
• 타일 맵을 찍고 그것을 tmx로 뽑아준다.
• cocos2d-x내에서 손쉽게 사용 가능.
7. cocos2d-x를 조금 더 편리하게 사용하기
• Physics Editor (https://www.codeandweb.com/physicseditor)
• box2d와 chipmunk의 충돌 면을 손쉽게 만들어주는 툴
8. 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
9. cocos2d-x에서 쉽게 마주할 실수와 해결법
• convertToNodeSpace
• ex) A->convertToNodeSpace(B); 를 하면 A의 좌표계에서 B의
위치를 알 수 있다.
• Parent Node - Child Node간의 1차원 정도의 차이를 메꾸는데
쓸 수 있음.
• 하지만 Parent Node와 Child Node의 Child Node간의 좌표계를
맞추는데 에러 발생한다.
10. cocos2d-x에서 쉽게 마주할 실수와 해결법
• convertToWorldSpace
• 위 convertToNodeSpace에서 발생할 문제를 해결할 수 있다.
• 모든 Node의 Position을 SCREEN! 좌표를 기준으로 변환해
리턴해준다.
• 위 함수를 사용하면 Parent Node의 Position이나, Child Node의
Child Node의 Position이나 동일한 차원에서 비교할 수 있게 된다.
11. cocos2d-x에서 쉽게 마주할 실수와 해결법
• 가끔 정상적으로 create 해주었고, 값이 들어간걸 확인했는데
다음 프레임에 참조해보면 nullptr이 뜨고 작동하지 않는 경우가
있다.
• 특정한 상황에서 발생하는 cocos2d-x 자체의 메모리 관리문제가
대부분이다.
• Sample scenario - http://cocos2d-x.
org/wiki/Reference_Count_and_AutoReleasePool_in_Cocos2d-x#
An-Error-Sample
• 이럴 경우가 발생하면, 해당 오브젝트를 초기화하고 난 다음
retain()을 걸어주면 해결된다.