cocos2d-X 게임 만들기 1편에 이어서 2편에서는 스프라이트를 추가해 보겠습니다.
스프라이트를 추가하기 전에 스프라이트로 사용할 이미지가 필요할 것입니다. 아래의 이미지 리소스를 받아 주세요.
위의 이미지 파일을 받은 다음 XCode에서 Resources 그룹에 드래그&드롭을 하여 복사를 합니다.
코드를 작성할 준비가 끝났으니 이제 코드를 작성해 보겠습니다 :) 우선 원작 게임에 충실하기 위해서 배경화면을 하얀색으로 변경해 보겠습니다. CCLayer를 상속 받아 GameScene을 만들었는데 CCLayerColor를 상속하여 만들면 배경화면 색상을 아주 쉽게 바꿀 수 있습니다.
GameScene.h 파일과 GameScene.cpp 파일을 아래와 같이 수정합니다.
코드의 설명은 주석을 참고하여 주세요. 위의 코드를 작성한 다음 컴파일 후 실행하면 아래와 같이 하얀 화면이 나옵니다.
코드를 작성할 준비가 끝났으니 이제 코드를 작성해 보겠습니다 :) 우선 원작 게임에 충실하기 위해서 배경화면을 하얀색으로 변경해 보겠습니다. CCLayer를 상속 받아 GameScene을 만들었는데 CCLayerColor를 상속하여 만들면 배경화면 색상을 아주 쉽게 바꿀 수 있습니다.
GameScene.h 파일과 GameScene.cpp 파일을 아래와 같이 수정합니다.
//: GameScene.h //: 배경화면 색상 변경을 위해서 CCLayerColor를 상속받는다 class GameScene : public cocos2d::CCLayerColor { ... };
// GameScene.cpp // 레이어를 초기화합니다. bool GameScene::init() { // CCLayerColor 의 initWithColor 초기자를 호출해 // 배경화면을 하얀색으로 변경한다. // 색상 설정은 ccc4(R, G, B, A) 매크로를 사용한다. if( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) ) { // 초기화에 실패하면 false를 반환합니다. return false; } return true; }
코드의 설명은 주석을 참고하여 주세요. 위의 코드를 작성한 다음 컴파일 후 실행하면 아래와 같이 하얀 화면이 나옵니다.
스프라이트를 추가하기 위해서 GameScene.h파일과 GameScene.cpp 에 setPlayerSprite()를 추가합니다. 그리고 초기자에서 setPlayerSprite()를 호출해 화면에 스프라이트가 출력되도록 코드를 작성하겠습니다. 편의상 전체 코드를 올리도록 하겠습니다.
코드 설명은 주석을 참고해 주세요. :) 아래는 컴파일 결과입니다.
// // GameScene.h // NinjaGame // // Created by SUNG CHEOL KIM on 11. 10. 12.. // Copyright 2011 individual. All rights reserved. // #ifndef NinjaGame_GameScene_h #define NinjaGame_GameScene_h #include "cocos2d.h" //: 배경화면 색상 변경을 위해서 CCLayerColor를 상속받는다 class GameScene : public cocos2d::CCLayerColor { public: //: 초기자 //: 아이폰용 cocos2d에서는 id를 반환하지만 cocos2d-x에서는 bool을 반환해야 합니다. virtual bool init(); //: CCScene을 반환하는 클래스 메서드 //: 아이폰에서 cocos2d로 게임을 만들 때 CCLayer를 상속받은 커스텀레이어에서 //: 이런 식으로 클래스 메서드를 만들어서 씬을 많이 반환해 보셨을 겁니다. static cocos2d::CCScene* scene(); //: static node() 메서드를 구현합니다. LAYER_NODE_FUNC(GameScene); private: //: 플레이어의 스프라이트를 추가한다. void setPlayerSprite(); }; #endif
// // GameScene.cpp // NinjaGame // // Created by SUNG CHEOL KIM on 11. 10. 12.. // Copyright 2011 individual. All rights reserved. // #include "GameScene.h" //using namespace cocos2d 의 약자 매크로입니다. USING_NS_CC; CCScene* GameScene::scene() { // GameScene레이어를 담아 반환할 씬을 하나 만듭니다. // 자동 메모리 해제 되는 인스턴스입니다. CCScene *scene = CCScene::node(); // 레이어를 생성합니다. GameScene *layer = GameScene::node(); // 레이어를 자식으로 씬에 추가합니다. scene->addChild(layer); return scene; } // 레이어를 초기화합니다. bool GameScene::init() { // CCLayerColor 의 initWithColor 초기자를 호출해 // 배경화면을 하얀색으로 변경한다. // 색상 설정은 ccc4(R, G, B, A) 매크로를 사용한다. if( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) ) { // 초기화에 실패하면 false를 반환합니다. return false; } //: 플레이어 스프라이트를 화면에 추가합니다. this->setPlayerSprite(); return true; } void GameScene::setPlayerSprite() { //: 화면 좌측, 중간에 놓기 위해서 화면 크기를 이용합니다. CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //: 플레이어 이미지를 불러와 스프라이트를 만듭니다. //: CCRectMake는 스프라이트의 영역을 만듭니다. //: 이미지 크기와 동일하게 만들어 줍니다. CCSprite *player = CCSprite::spriteWithFile("Player.png", CCRectMake(0, 0, 27, 40)); //: 플레이어의 위치를 정해줍니다. player->setPosition( ccp(player->getContentSize().width/2, winSize.height/2) ); //: GameScene에 스프라이트를 추가합니다. this->addChild(player); }
코드 설명은 주석을 참고해 주세요. :) 아래는 컴파일 결과입니다.
이번 편은 여기서 마치고 다음 편에서는 스프라이트를 움직여 보도록 하겠습니다^^
'게임개발팁' 카테고리의 다른 글
cocos2d-X 게임 만들기 4편 (4) | 2011.11.09 |
---|---|
cocos2d-X 게임 만들기 3편 (11) | 2011.10.13 |
cocos2d-X 게임 만들기 1편 (14) | 2011.10.12 |
iOS OpenGL | ES 튜토리얼 3편 (3) | 2011.10.02 |
iOS OpenGL | ES 튜토리얼 2편 (12) | 2011.09.27 |