본문 바로가기

Cocos2d-x v3.17/고급 기능

[Cocos2d-x 고급기능]특수한 노드객체 소개 및 TileMap

반응형

고급 객체 

Label,Sprite같은 기본적인 객체이외에 Cocos2d-x는 다른 특수한 객체를 제공하고 일부 고급기능을 구축할수 있게 도와줍니다. 

당신이 타일맵기반의 게임을 만들고싶거나 파티클 효과 를 넣고 싶거나 혹은 맵 스크롤같은 기능을 추가하고 싶다면 걱정말고 아래의 특별한 객체를 사용하십시오. 

   

   

   

출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/other_node_types/

   

타일맵 

게임개발과정에서 우린 스크린크기를 넘는 지도가 있을수 있습니다.

스타크래프트같은 전략게임에서 우린 지도에서 스크롤을 하여 다른 장면으로 이동할수 있습니다.

이런 게임은 보통 풍부한 배경요소를 가지고 있습니다.

만약 바로 배경그림이 스위칭되는 방식을 사용하면 다른장면마다 다른 배경그림을 준비해야 합니다.

게다가 그림파일 크기가 작지도 않구요.

이렇게 하면 리소스 낭비를 야기하게 됩니다. 

타일맵은 이런 문제를 해결하기 위해 만들어졌습니다.

하나의 커다란 월드맵 혹은 배경맵은 몇종류의 지형으로 표시하고 지형마다 한장의 작은 지형을 배치합니다.

우린 이런 작은 지형을 타일이라고 합니다.

이런 타일을 병합시키면 하나의 완전한 지도가 조합되고 이것이 타일맵의 원리입니다. 

   

Cocos2d-x에서 타일맵은 구현하기 위해선 TileMap객체를 사용합니다.

TileMap은 타일이 사각형 혹은 육각형의 구역을 가져야 하고 다른 타일들이 모여서 완전한 맵을 구성시킵니다.TileMap은 XML포맷이나 TMX포맷을 사용합니다. 


TMX파일을 이용하여 타일맵을 생성하기: 


C++ 

// reading in a tiled map.

auto map = TMXTiledMap::create("TileMap.tmx");

addChild(map099); // with a tag of '99' 

타일맵은 여러 레이어가 있을수 있습니다.

레이어이름으로 특정한 레이어를 가져올수 있습니다. 


C++ 

// how to get a specific layer

auto map = TMXTiledMap::create("TileMap.tmx");

auto layer = map->getLayer("Layer0");

auto tile = layer->getTileAt(Vec2(163)); 

타일맵마다 유일한 위치와 ID를 갖습니다.

이것은 우리가 쉽게 특정한 타일을 엑세스 할수 있게합니다.

   

위치로 액세스하기: 

C++ 

// to obtain a specific tiles id

unsigned int gid = layer->getTileGIDAt(Vec2(063)); 

타일맵 레이아웃 예시:



많은 툴들이 타일맵을 제작하기 위해서 사용되고 있고 Tiled는 그중 유행하는 하나의 제작툴입니다.

이것은 활발한 커뮤니티를 가지고 있으니 한번 사용해 보십시오.

위의 그림이 Tiled의 스크린샷입니다. 

   

출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/other_node_types/tilemap.html

 


반응형