混沌天地,盤古不忍寂寞,打掉自己的牙齒化作一把巨斧劈開天地,創造了宇宙萬物,演化出生機勃勃的大千世界,讓我們來扮演盤古,創造一個嶄新的游戲世界。
在游戲開發過程中,需要了解幾個重要的概念:導演,場景,布景,角色和動作,既然我們扮演盤古,天地的演化就由我們來作主
1.CCDirector(盤古):盤古用一把巨斧創造了世界,組織了天地萬物,那么在游戲里,他就是游戲的創世神,制定游戲的規則,讓場景 ,布景和宇宙萬物有序地動作起來
2.CCScene(天地):盤古用身體撐開天地,所謂天地,在游戲里就是我們常見的關卡,關卡主要由布景和角色組成。
3.CCamera(太陽):日升日落,晝夜交替,萬物得以生生不息。在游戲里,不同的角度,旋轉,位置變化,縮放。
4.CCLayer(山川大地): 盤古臨死前,他嘴里呼出的氣變成了春風和天空的雲霧;肌肉變成千里沃野,供萬物生
存。 在游戲里,布景就是在每個場景里的背景,就是山川,大地,天空。
5.CCSprite(眾生萬物):眾生萬物在大地上生活,棲息繁衍,不斷進化,廝殺。游戲里人物行走,雄鷹翱翔,怪物橫行,這些都可以由你自己創造。
6.CCAction(動作):人類誕生,捕殺獵物。在游戲里,要生存,與怪物搏斗,就得擁有各種技能,動作,這就需要CCAction支持。
第一步 :在HelloWorld的Init方法里加載游戲背景,用CCSprite加載start.jpg的資源文件作為游戲的開始背景。
//加載過場畫面 CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite* pSprite = CCSprite::create("start.jpg"); CC_BREAK_IF(! pSprite); pSprite->setPosition(ccp(size.width/2, size.height/2)); // Add the sprite to HelloWorld layer as a child layer. this->addChild(pSprite, 0);
游戲中只有一個導演,所以CCDirector使用單例模式,為什么會使用單例模式,以及它的好處,我會在后面的章節單獨談到
CCSprite初始化加載資源采用create方法,這是自cocos2d-x2.0后開始采用的,使用了autorelease自動管理內存,所以當我們使
用時不必手動release掉內存
第二步:加載游戲的控制菜單
在resoure.h中加入資源文件
static const char s_playfont[] = "fonts/bitmapFontChinese.fnt"; static const char s_start[] = "Start Game"; static const char s_exit[] = "Exit Game";
在加載完過場畫面之后加載菜單
//加載游戲菜單 CCLabelBMFont* startfontstyle=CCLabelBMFont::create(s_start,s_playfont); CCMenuItemLabel* startItem=CCMenuItemLabel::create(startfontstyle,this,menu_selector(HelloWorld::menuPlayNewGame)); CCLabelBMFont* exitfontstyle=CCLabelBMFont::create(s_exit,s_playfont); CCMenuItemLabel* exitItem = CCMenuItemLabel::create(exitfontstyle,this,menu_selector(HelloWorld::menuCloseCallback)); CCMenu* startMenu=CCMenu::create(startItem,exitItem, NULL); startMenu->alignItemsVertically(); this->addChild(startMenu);
游戲的菜單item:
CCMenuItemSprite:使用圖片sprite作為menu的菜單項
CCLabelAtlas:設置好字庫文件,並且以ascii字符排序順序定義好字庫的初始字符,就可以使用字庫創建文本Label
CCMenuItemLabel:以label方式創建的菜單項,會自動以點擊放大作為菜單的操作效果來處理
CCMenuItemFont:普通的文本菜單項
CCLabelBMFont:使用字體的文本菜單項
在HelloWorld.h中加入菜單回調方法的聲明
// a selector callback void menuCloseCallback(CCObject* pSender); void menuPlayNewGame(CCObject* sender);
在HelloWorld.cpp中加入菜單回調方法
void HelloWorld::menuCloseCallback(CCObject* pSender) { // "close" menu item clicked CCDirector::sharedDirector()->end(); } void HelloWorld::menuPlayNewGame(CCObject* sender) { }
下一章節開始制作TMX游戲地圖,並加載到我們的新場景當中.