코코스2dx Text 사용방법




코코스2dx에서 text를 동적으로 생성해서 outline 을 사용하는 방법은 생각보다 간단해요. 순서를 나열해보자면 먼저 text를 생성하고 위치를 정하고 폰트이름과 크기를 지정해주고 출력할 메시지를 입력해 주고 나면 준비는 끝. 마지막으로 outline  속성을 걸어주면 완료!!


자 말로하면 어려운데 코드를 보여드릴께요 금방 이해 될꺼에요.



auto msg = Text::create();

msg->setFontName("font/kenpixel.ttf");   // 폰트 경로

msg->setFontSize(30);                         // 폰트 크기

msg->enableOutline(Color4B::RED, 3);     // outline 속성을 걸어주는 코드

msg->setString("폰트 만들기 쉬워요");    // 출력할 내용

msg->setPosition(Vec2(100, 100);          // 폰트의 위치 지정

this->addChild(msg);                          // 현재 레이어에 삽입





끝! 간단하지요?


자 이렇게만 하면 너무 재미없으니 게임에서 잘 나오는 폰트나 나왔다가 위로 올라가면서 사라지는 코드를 구현해 볼께요. 저는 우선 여러개의 상황을 고려해서 이렇게 만들어봤어요. 아이템을 먹었을때 종류에 따라서 폰트의 outline 색이 달라지도록요. 그리고 action을 만들어서 넣어 주었어요. 잠깐 나타나서 위로 올라가서 사라지고 마지막으로 자동으로 폰트 자체도 삭제되도록요.



void GameScene::showText(const int &iType, const Vec2 &iAt, const std::string &iMsg)

{

auto msg = Text::create();

msg->setFontName("font/kenpixel.ttf");

msg->setFontSize(30);

if(iType == ITEM_HP)

msg->enableOutline(Color4B::RED, 3); 

else if(iType == ITEM_THROW)

msg->enableOutline(Color4B(80, 51,29, 255), 3);

else if(iType == ITEM_SCORE)

msg->enableOutline(Color4B(150, 100, 60, 255), 3);

else if(iType == ITEM_KEY)

msg->enableOutline(Color4B(230, 196, 0, 255), 3);


msg->setString(iMsg);

msg->setPosition(iAt);

msg->runAction(Sequence::create(FadeIn::create(0.1f), MoveBy::create(0.3f, Vec2(0, 30)), FadeOut::create(0.1f), RemoveSelf::create(), NULL));

_pTileMap->addChild(msg);

}




아래는 이 코드를 활용한 실제 개발중인 게임 영상이에요. 이 코드를 적용하면 아래처럼 폰트나 나왔다가 사라지는 효과를 연출해 주어요.



생각보다 간단하죠? 다양한 방법들이 있겠지만 저는 이렇게 활용해 보았어요.


Cocos2D 게임 프로그래밍
국내도서
저자 : 로드 스트로우고(Rod Strougo),레이 웬더리히 / 정기훈역
출판 : 정보문화사 2015.01.09
상세보기