자작 게임도 잘 부탁드려요~

adsense



[cocos2d-x / 플래피위치] 게임오버 처리-레이어를 활용하자





★ 레이어(Layer) 개요
레이어는 다른 노드를 차일드로 갖는 컨테이너 역할을 합니다.
동시에 위치나 태그, 이름, 로테이트, z order 등 일반적인 노드와 비슷한 특성도 가집니다.

예를 들어 팝업창을 만든다고 하면
팝업창을 구성하는 요소 - 창, 메시지, 버튼 등이 필요한데
이것을 레이어 위에 올려서, 창을 닫아야 할 때 레이어만 remove하면 하위 칠드런도 한꺼번에 정리됩니다.

레이어는 복수로 겹칠 수 있기 때문에 게임 레이어-상점 레이어-구매확인 팝업 레이어 이런 식으로 구성할 수 있습니다.

레이어를 독립된 클래스로 만들면 다루기도 쉬울뿐더러, 공동 작업할 때에도 분담해서 작업할 수 있습니다.
이때 필요한 것이 std::function 을 사용한 사용자 정의 콜백입니다. 이것은 다음 강좌에서.


★ LayerColor
지정 색상으로 채워지는 배경을 갖는 LayerColor도 있습니다.
팝업창 레이어를 만들 때 하위 화면을 반투명으로 덮기 위한 용도 등으로 응용할 수 있습니다.

LayerColor를 상속하는 클래스를 만들기 위해서는 init 안에서
if(!Layer::init()) 부분을
if(!LayerColor::initWithColor(Color4B(0,0,0,160))) 처럼 바꿔주면 됩니다.



★ 레이어의 터치 삼키기 (Swallow)

예를 들어 상점 레이어가 있고, 구매할 것을 선택했을 때
'구매하시겠습니까? [예] [아니오]' 팝업을 띄울 수 있습니다.


이때 팝업의 버튼만 눌려야 하고 상점 레이어의 버튼이 눌리면 안됩니다.

이걸 막아주는 것을 터치 삼키기라고 하는데, 터치 이벤트에 setSwallowTouches(true)를 설정하여 막을 수 있습니다.
(따로 설정하지 않았을 때의 기본값은 false입니다)

이번 게임에서는 coocs2d-x의 기본 UI를 사용하지 않지만
레이어 전체에 터치 이벤트를 설정하지 않고 UI 버튼에만 이벤트가 설정된 경우, 터치 삼키기를 다른 방법으로 걸어줄 필요가 있습니다.




덧글

댓글 입력 영역


Books

Geek라이프

기초부터 시작하는 모형 전자공작
박성윤 저

사이토 나오키의 일러스트 첨삭 레슨 Before & After
사이토 나오키 저/박수현 역

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC