cocos2d-x 에서는 객체를 배치할 때

두 객체가 겹치는 경우 어느 객체를 위 아래를 배치할 것인가에 대한 문제를 

ZOrder 개념을 사용해서 해결한다.


말그대로 XY 좌표가 아닌 Z 좌표의 순서를 값으로 지정하는 방법이다. 

  - ZOrder 값은 부모가 같은 Brother 간의 순서만 조절 가능하다. 

  - 같은 부모 내에서 Z-index가 같은 경우, 늦게 추가된 객체가 위에 그려진다. 

  - ZOrder를 변경 하고 싶은 경우 reorderChild(CCNode *child, int zOrder)

  - ZOrder 값은 enum이나 constant로 모아서 정의 해 두는 것이 편리하다.


배치 노드를 사용 했을 경우 배치노드에 붙어 있는 것들 끼리만 섞이는 문제가있다.

이 문제 때문에 한참 막힌거같다.


m_pBackGround(레이어), m_allTile(배치노드)

m_pBackGround->addChild( m_allTile );

m_allTile->addChild( m_pBlock[i] );

이런 식으로 붙이고 있는데 이렇게 하면 히어로와 에너미는 레이어에 붙어있기 때문에 배치노드에 붙어있는 타일들과 z축 정렬이 되지 않는다.


해결한 방법

일단 타일들을 깔고 전체 타일에 z축을 제일 아래층으로 만들고

z축정렬이 필요한 타일들을 골라서 그 위에 배치노트에 붙이지 않고 레이어에 붙인 후 정렬하는 방법으로 만들었다.

반응형

'Programming > Cocos2D-X' 카테고리의 다른 글

Cocos2d-x로 만들어본 제노니아  (0) 2015.07.03
OpenGL 화면좌표  (0) 2015.06.30
FMOD 사운드 넣기  (0) 2015.06.01
FMOD 다운로드-> 세팅 -> 사용법  (2) 2015.05.08
Enemy를 만들어보자  (0) 2015.05.07
LogoScene 만들기  (0) 2015.05.06
cocos2d 오토액션  (0) 2015.05.05
맵 그리기  (0) 2015.05.03