Cocos2d-x 3.X手游開發(fā)實(shí)例詳解(最新最簡(jiǎn)Cocos2d-x手機(jī)游戲開發(fā)學(xué)習(xí)方法,以熱門游戲2048、卡牌為例,完整再現(xiàn)手游的開發(fā)過程,實(shí)例豐富,代碼完備,Cocos2d-x作者之一林順和泰然網(wǎng)創(chuàng)始人楊雍力薦)
于浩洋 著
ISBN 978-7-121-23998-4
2014年9月出版
定價(jià):59.00元
356頁(yè)
16開
編輯推薦
以Cocos2d-x V3.0為框架全面講解手游開發(fā)的知識(shí)和方法
以熱門游戲2048、卡牌為例,完整再現(xiàn)手游的開發(fā)過程
Cocos2d-x作者之一林順和泰然網(wǎng)創(chuàng)始人楊雍力薦
知識(shí)點(diǎn)深入淺出,實(shí)例豐富,代碼完備
線上交流平臺(tái),及時(shí)答疑解惑
內(nèi)容提要
《Cocos2d-x 3.X手游開發(fā)實(shí)例詳解》以Cocos2d-xV3.0 系列版本為框架,通過實(shí)例講解手機(jī)游戲的開發(fā)知識(shí)和方法,著重通過實(shí)例提高讀者的開發(fā)動(dòng)手能力。涉及的內(nèi)容包括:環(huán)境搭建、交叉編譯以及打包部署;Cocos2d-x數(shù)據(jù)類型和基本概念的使用,如場(chǎng)景、導(dǎo)演、精靈等;使用Cocos2d-x 創(chuàng)建用戶界面,如文本、菜單、滾動(dòng)框等基本控件,以及一些擴(kuò)展控件的使用;使用Cocos2d-x 創(chuàng)建動(dòng)作,比如讓精靈移動(dòng)、跳躍、旋轉(zhuǎn),以及如何創(chuàng)建按順序或同時(shí)進(jìn)行的動(dòng)作;使用Cocos2d-x 播放、停止、暫停、繼續(xù)播放背景音樂和音效;Cocos2d-x 使用的觸摸事件機(jī)制;在游戲中存儲(chǔ)數(shù)據(jù)的幾種方式;使用HTTP、Sockets、WebSockets 進(jìn)行網(wǎng)絡(luò)編程;在游戲中使用物理引擎Box2D、使用瓷磚地圖、使用CocosBuilder 制作游戲界面等;Cocos2d-x 中的紋理和動(dòng)畫。最后通過兩個(gè)完整的游戲開發(fā)實(shí)例講解使用Cocos2d-x 開發(fā)游戲的全過程。
《Cocos2d-x 3.X手游開發(fā)實(shí)例詳解》實(shí)例豐富,代碼完備,知識(shí)點(diǎn)清晰簡(jiǎn)潔?!禖ocos2d-x 3.X手游開發(fā)實(shí)例詳解》所有實(shí)例均提供完整代碼下載,書后附有代碼清單概要,非常方便讀者查找使用。此外作者還將Cocos2d-x 3.X 各版本間的區(qū)別用實(shí)例做了詳細(xì)說(shuō)明,且將在博客不斷更新。
《Cocos2d-x 3.X手游開發(fā)實(shí)例詳解》適合對(duì)Cocos2d-x感興趣及有志于學(xué)習(xí)和從事移動(dòng)平臺(tái)游戲開發(fā)的讀者閱讀參考。
目錄
第1章 準(zhǔn)備 1
1.1 Cocos2d-x簡(jiǎn)介 1
1.2 Cocos2d-x架構(gòu)和目錄結(jié)構(gòu) 6
1.3 環(huán)境搭建 7
1.3.1 Windows開發(fā)環(huán)境搭建 7
1.3.2 Mac開發(fā)環(huán)境搭建 11
1.3.3 創(chuàng)建新項(xiàng)目 12
1.3.4 在Android上調(diào)試項(xiàng)目 14
1.3.5 打包APK文件 22
第2章 Cocos2d-x常用數(shù)據(jù)和方法 23
2.1 C++數(shù)據(jù)類型 23
2.2 Cocos2d-x封裝的數(shù)據(jù)類型 24
2.2.1 布爾型Bool的使用 24
2.2.2 整型Integer的使用 25
2.2.3 浮點(diǎn)型Double、Float的使用 25
2.2.4 字符串String的使用 25
2.2.5 數(shù)組Array的使用 26
2.2.6 點(diǎn)Point的使用 27
2.2.7 尺寸Size的使用 28
2.2.8 矩形Rect的使用 29
2.2.9 字典Dictionary的使用 31
2.3 常用宏定義 32
2.3.1 數(shù)學(xué)相關(guān)宏的使用 32
2.3.2 斷言宏CCAsset的使用 33
2.3.3 數(shù)組遍歷宏CCARRAY_FOREACH和CCARRAY_FOREACH_REVERSE的使用 33
2.3.4 字典遍歷宏CCDICT_FOREACH的使用 35
2.3.5 對(duì)象創(chuàng)建方法宏CREATE_FUNC的使用 36
2.3.6 屬性定義宏CC_PROPERTY的使用 37
2.3.7 命名空間宏 39
2.4 Cocos2d-x中的坐標(biāo)和坐標(biāo)系 39
2.4.1 OpenGL坐標(biāo)系和屏幕坐標(biāo)系 39
2.4.2 錨點(diǎn)和位置的使用 40
2.4.3 節(jié)點(diǎn)坐標(biāo)系和世界坐標(biāo)系的相互轉(zhuǎn)換 42
第3章 Cocos2d-x核心概念 45
3.1 基礎(chǔ)節(jié)點(diǎn) 46
3.1.1 Node簡(jiǎn)介 46
3.1.2 Node應(yīng)用舉例之移除節(jié)點(diǎn) 47
3.2 相機(jī) 47
3.2.1 相機(jī)簡(jiǎn)介 47
3.2.2 使用CCCamera循環(huán)縮放點(diǎn) 48
3.3 導(dǎo)演 49
3.3.1 導(dǎo)演Director簡(jiǎn)介 49
3.3.2 Director常用功能舉例 50
3.4 場(chǎng)景 51
3.4.1 場(chǎng)景定義 51
3.4.2 創(chuàng)建顯示戰(zhàn)斗場(chǎng)景 52
3.4.3 動(dòng)態(tài)切換多個(gè)場(chǎng)景 53
3.5 布景 56
3.5.1 布景定義 56
3.5.2 使用Layer模擬Windows Phone主界面 57
3.6 精靈 59
第4章 Cocos2d-x用戶界面 61
4.1 文本渲染 61
4.1.1 制作fnt格式字體 62
4.1.2 使用LabelBMFont顯示文本 66
4.1.3 使用LabelTTF顯示文本 67
4.1.4 使用LabelAtlas顯示文本 70
4.2 菜單 71
4.2.1 菜單和菜單項(xiàng)的簡(jiǎn)單使用 72
4.2.2 使用菜單制作游戲菜單功能 74
4.3 滾動(dòng)框 80
4.3.1 使用ScrollView顯示多頁(yè)內(nèi)容 80
4.3.2 監(jiān)聽ScrollView的滾動(dòng)和縮放事件 82
4.3.3 使用TableView展示多頁(yè)內(nèi)容 83
4.3.4 觸摸TableView里的菜單來(lái)滾動(dòng)TableView 86
4.4 擴(kuò)展控件 87
4.4.1 滑動(dòng)條控件ControlSlider 87
4.4.2 開關(guān)控件ControlSwitch 90
4.4.3 取色器控件ControlColourPicker 92
4.4.4 電位計(jì)控件ControlPotentiometer 94
4.4.5 步進(jìn)器控件ControlStepper 95
4.4.6 按鈕控件ControlButton 96
4.4.7 Scale9Sprite 99
4.5 使用編輯框制作用戶登錄界面 100
第5章 Cocos2d-x動(dòng)作 105
5.1 動(dòng)作分類 105
5.2 瞬時(shí)動(dòng)作 106
5.2.1 使用FlipX/FlipY實(shí)現(xiàn)X/Y翻轉(zhuǎn) 106
5.2.2 使用Hide、Show實(shí)現(xiàn)隱藏和顯示 108
5.3 延時(shí)動(dòng)作 109
5.3.1 使用MoveTo或者M(jìn)oveBy實(shí)現(xiàn)移動(dòng) 109
5.3.2 使用RotateTo和RotateBy實(shí)現(xiàn)旋轉(zhuǎn) 110
5.3.3 使用JumpTo和JumpBy實(shí)現(xiàn)跳躍 113
5.3.4 使用ScaleTo和ScaleBy實(shí)現(xiàn)縮放 114
5.3.5 使用SkewTo和SkewBy實(shí)現(xiàn)傾斜變形 115
5.3.6 使用CardinalSplineBy和CardinalSplineTo實(shí)現(xiàn)曲線運(yùn)動(dòng) 117
5.3.7 使用FadeIn和FadeOut實(shí)現(xiàn)漸隱漸出 119
5.4 聯(lián)合動(dòng)作 120
5.4.1 按先后順序執(zhí)行動(dòng)作 120
5.4.2 同時(shí)執(zhí)行動(dòng)作 121
5.4.3 逆向執(zhí)行動(dòng)作 122
5.4.4 多次重復(fù)執(zhí)行動(dòng)作 123
5.4.5 延時(shí)執(zhí)行動(dòng)作 124
第6章 音頻處理 125
6.1 音頻處理類SimpleAudioEngine 125
6.2 添加控制背景音樂 126
6.2.1 播放背景音樂并調(diào)整音量 126
6.2.2 停止播放背景音樂 128
6.2.3 暫停播放背景音樂 128
6.2.4 繼續(xù)播放背景音樂 128
6.3 添加控制音樂效果 129
6.3.1 播放音樂 129
6.3.2 停止播放音樂 131
6.3.3 暫停播放音樂 131
6.3.4 繼續(xù)播放音樂 131
6.3.5 停止、暫停、繼續(xù)播放所有音樂 132
6.4 Cocos2d-x支持的音頻格式 133
第7章 Cocos2d-x瓷磚地圖 135
7.1 什么是瓷磚地圖 135
7.2 使用Tiled制作瓷磚地圖 137
7.2.1 安裝Tiled 137
7.2.2 制作地圖 138
7.3 在游戲中使用瓷磚地圖 140
7.3.1 使用TMXTiledMap把瓷磚地圖加載到游戲中 140
7.3.2 拖曳TMX地圖 141
7.3.3 在TMX地圖中添加并移動(dòng)精靈 142
7.3.4 讀寫TMX地圖中的圖層和瓷磚 143
第8章 Cocos2d-x中的事件機(jī)制 146
8.1 事件和事件調(diào)度 147
8.2 觸摸事件 149
8.2.1 單點(diǎn)觸摸事件的類和方法 149
8.2.2 單擊屏幕移動(dòng)精靈 150
8.2.3 拖動(dòng)精靈移動(dòng) 152
8.2.4 修改監(jiān)聽器的優(yōu)先級(jí) 154
8.2.5 多點(diǎn)觸摸事件 156
8.2.6 使用多點(diǎn)觸摸實(shí)現(xiàn)縮放 157
8.3 鼠標(biāo)事件 159
8.4 鍵盤事件 159
8.4.1 鍵盤事件介紹 159
8.4.2 實(shí)例:把鍵盤輸入內(nèi)容顯示在屏幕中 160
8.5 加速計(jì) 161
8.5.1 加速計(jì)介紹 161
8.5.2 實(shí)例:利用加速計(jì)控制小球移動(dòng) 162
第9章 Cocos2d-x本地?cái)?shù)據(jù)存儲(chǔ) 165
9.1 使用UserDefault存儲(chǔ)數(shù)據(jù) 165
9.1.1 UserDefault介紹 165
9.1.2 使用UserDefault存儲(chǔ)修改數(shù)據(jù) 167
9.2 文件 169
9.2.1 文件處理類FileUtils 169
9.2.2 判斷文件是否存在 169
9.2.3 設(shè)置文件別名 170
9.2.4 獲取文件完整路徑 172
9.2.5 設(shè)置文件搜索路徑 174
9.2.6 根據(jù)分辨率調(diào)用不同的資源 175
9.2.7 向文件中寫入數(shù)據(jù) 176
9.2.8 從文件中讀取數(shù)據(jù) 179
9.2.9 把數(shù)據(jù)寫入plist文件 180
9.2.10 從plist文件讀取數(shù)據(jù) 182
9.3 SQLite存儲(chǔ) 183
9.3.1 SQLite簡(jiǎn)介 183
9.3.2 可視化管理工具SQLiteStudio 185
9.3.3 使用SQLiteStudio添加數(shù)據(jù)庫(kù) 186
9.3.4 使用SQLiteStudio添加表和數(shù)據(jù) 188
9.3.5 使用C語(yǔ)言接口操作SQLite數(shù)據(jù)庫(kù) 190
9.3.6 不使用回調(diào)查詢SQLite數(shù)據(jù)庫(kù) 194
第10章 網(wǎng)絡(luò)編程 197
10.1 HTTP實(shí)現(xiàn)網(wǎng)絡(luò)通信 198
10.1.1 HTTP通信簡(jiǎn)介及常用類 198
10.1.2 GET方式通信 200
10.1.3 POST方式通信 203
10.2 Socket實(shí)現(xiàn)網(wǎng)絡(luò)通信 204
10.2.1 Socket簡(jiǎn)介 204
10.2.2 在Cocos2d-x中使用Socket 205
10.3 WebSocket實(shí)現(xiàn)網(wǎng)絡(luò)通信 209
10.3.1 WebSocket簡(jiǎn)介 209
10.3.2 在Cocos2d-x中使用WebSocket 210
第11章 物理引擎Box2D 215
11.1 Box2D簡(jiǎn)介 216
11.2 創(chuàng)建Box2D的HelloWorld項(xiàng)目 217
11.2.1 創(chuàng)建一個(gè)世界 217
11.2.2 創(chuàng)建一個(gè)地面物體 217
11.2.3 創(chuàng)建一個(gè)動(dòng)態(tài)物體 219
11.2.4 模擬(Box2D的)世界 219
11.2.5 清理工作 221
11.3 世界b2World 221
11.3.1 b2World簡(jiǎn)介 221
11.3.2 世界常用功能 222
11.4 物體b2Body 225
11.4.1 b2Body簡(jiǎn)介 225
11.4.2 物體定義 226
11.4.3 創(chuàng)建物體 228
11.4.4 使用物體 229
11.5 固定裝置b2FixtureDef 231
11.5.1 b2FixtureDef簡(jiǎn)介 231
11.5.2 創(chuàng)建b2FixtureDef 231
11.6 關(guān)節(jié) 234
11.6.1 關(guān)節(jié)簡(jiǎn)介 234
11.6.2 關(guān)節(jié)定義 235
11.6.3 創(chuàng)建關(guān)節(jié) 235
11.6.4 關(guān)節(jié)類型和使用關(guān)節(jié) 236
11.7 接觸 242
11.7.1 接觸簡(jiǎn)介 242
11.7.2 接觸監(jiān)聽器 243
11.7.3 接觸篩選 244
第12章 紋理和動(dòng)畫 246
12.1 渲染和修改紋理 246
12.1.1 紋理類Texture2D 247
12.1.2 Cocos2d-x支持的紋理格式 249
12.1.3 Cocos2d-x支持的大紋理尺寸 249
12.1.4 使用RenderTexture保存截屏 250
12.1.5 圖片抗鋸齒處理方式 251
12.1.6 使用圖片緩存 253
12.1.7 制作游戲加載場(chǎng)景 254
12.1.8 使用TexturePacker制作Sprite Sheet 256
12.2 動(dòng)畫 258
12.2.1 幀動(dòng)畫 258
12.2.2 使用幀動(dòng)畫實(shí)現(xiàn)英雄打斗 259
12.2.3 Sprite Sheet動(dòng)畫 266
12.2.4 骨骼動(dòng)畫 268
12.2.5 使用CocoStudio制作骨骼動(dòng)畫 269
12.2.6 在項(xiàng)目中調(diào)用CocoStudio制作的骨骼動(dòng)畫 273
第13章 使用Cocos2d-x制作2048休閑游戲 275
13.1 準(zhǔn)備工作 275
13.2 使用CocoStudio制作UI界面 276
13.3 編寫邏輯代碼 279
13.3.1 把UI界面添加到游戲界面中 279
13.3.2 添加獲取分?jǐn)?shù)控件并設(shè)置分?jǐn)?shù) 281
13.3.3 添加數(shù)字方塊類 281
13.3.4 初始化游戲數(shù)據(jù) 282
13.3.5 添加按鈕功能 284
13.3.6 添加事件監(jiān)聽 285
13.3.7 實(shí)現(xiàn)方塊上下左右移動(dòng) 287
13.3.8 添加新的數(shù)字塊 290
13.3.9 判斷游戲是否結(jié)束 291
13.3.10 添加游戲介紹界面 293
第14章 使用Cocos2d-x制作水滸卡牌游戲 294
14.1 準(zhǔn)備工作 294
14.2 定義游戲數(shù)據(jù)結(jié)構(gòu)和存儲(chǔ)單例 295
14.3 添加登錄界面 299
14.4 添加游戲主場(chǎng)景 305
14.5 添加游戲首頁(yè) 307
14.6 添加英雄卡牌列表界面 311
14.7 添加戰(zhàn)斗流程 314
14.8 添加戰(zhàn)斗界面 319
14.9 終結(jié) 323
附錄A 實(shí)例代碼清單說(shuō)明 324
附錄B Cocos2d-x 3.X主要版本間的區(qū)別 328
精彩節(jié)摘
14.7 添加戰(zhàn)斗流程
戰(zhàn)斗是卡牌游戲的靈魂,有了喜歡的英雄,給英雄裝備一套好的裝備,這時(shí)不拿出來(lái)用用多沒意思?。?zhàn)斗讓你的英雄久經(jīng)沙場(chǎng),變得更強(qiáng)更偉大。該游戲中的戰(zhàn)斗流程是,單擊戰(zhàn)爭(zhēng)菜單,首先進(jìn)入世界地圖,如圖14-5所示,單擊世界地圖上的某個(gè)勢(shì)力范圍,進(jìn)入該勢(shì)力范圍的推圖,再單擊其中一個(gè)推圖進(jìn)入戰(zhàn)斗場(chǎng)景。
世界地圖通過GameMapLayer實(shí)現(xiàn)。在GameMapLayer初始化中,添加一個(gè)ScrollView,用來(lái)滾動(dòng)顯示隱藏的地圖:
ui::ScrollView* dragPanel = ui::ScrollView::create();
設(shè)置dragPanel的大小為窗口大?。?/p>
Size widgetSize =Director::getInstance()->getWinSize();
dragPanel->setSize(widgetSize);
設(shè)置dragPanel的內(nèi)容大小為640×1920:
Size backgroundSize =Size(640,1920);
dragPanel->setInnerContainerSize(backgroundSize);
設(shè)置位置添加到場(chǎng)景中:
dragPanel->setPosition(ccp((widgetSize.width -backgroundSize.width) / 2, (widgetSize.height - backgroundSize.height) / 2 +
(backgroundSize.height - dragPanel->getContentSize().height) / 2));
m_pLayer->addChild(dragPanel);
世界地圖是用CocosStudio制作的UI,這里省略詳細(xì)的制作過程,因?yàn)樯弦粋€(gè)實(shí)例已經(jīng)詳細(xì)講解了CocosStudio怎制作UI。我們把UI添加到dragPanel中:
Layout* map_root =dynamic_cast
dragPanel->addChild(map_root);
然后定義一個(gè)數(shù)組,代表勢(shì)力范圍的名稱:
string str[21] ={"yananfu","shijiachun","shimiao","yezhulin","changzhou","hunxian","erlongsan","qingzhou","jiangzhou","liangsan","zhujiazhuang","beijing","chengtou","dongpingfu","dongjing","liangsan","jizhou","shuzhou","hangzhou","guanfu"};
通過一個(gè)for循環(huán)遍歷UI地圖中的Button,并為Button添加名稱和回調(diào)函數(shù):
for (unsigned int i = 0; i<20; ++i)
{
Button* button =(Button*)(map_root->getChildByTag(i));
button->setTitleFontSize(32);
button->setTitleColor(Color3B(255,0,0));
button->setTitleText(str[i].c_str());
button->addTouchEventListener(this,toucheventselector(GameMapLayer::buttonTouchEvent));
}
在回調(diào)函數(shù)buttonTouchEvent中,先獲取單擊Button的tag和現(xiàn)在的等級(jí):
voidGameMapLayer::buttonTouchEvent(Ref *pSender, TouchEventTypetype)
{
Size winSize=Director::getInstance()->getWinSize();
Sprite*bg=Sprite::create("tipbg.png");
Button*pHome=(Button*)pSender;
int tag=pHome->getTag();
int level=GameData::shareGameData()->mlevel;
switch (type)
{
case TOUCH_EVENT_BEGAN:
break;
case TOUCH_EVENT_MOVED:
break;
case TOUCH_EVENT_ENDED:
....進(jìn)行操作....
break;
case TOUCH_EVENT_CANCELED:
break;
default:
break;
}
}
然后在TOUCH_EVENT_ENDED中判斷等級(jí)是否大于等于tag*5-10,如果是就進(jìn)入推圖場(chǎng)景:
if(level>=tag*5-10)
{
FightLayer *info=new FightLayer(tag);
addChild(info);
}
這時(shí),運(yùn)行程序,單擊世界地圖中最上面的勢(shì)力,進(jìn)入推圖場(chǎng)景,如圖14-6所示。
作者簡(jiǎn)介
于浩洋:曾就職于阿里巴巴、人人網(wǎng),從事多年互聯(lián)網(wǎng)產(chǎn)品開發(fā)工作。守望科技工作室創(chuàng)始人,我博輕游科技有限責(zé)任公司CTO,參與主導(dǎo)多款卡牌手游的開發(fā)與發(fā)行,有豐富的手游開發(fā)經(jīng)驗(yàn)。
媒體評(píng)論
手游是個(gè)很有前景的行業(yè),同時(shí)也是個(gè)競(jìng)爭(zhēng)異常激烈的行業(yè)。為了在競(jìng)爭(zhēng)中立于不敗之地,必須有可靠先進(jìn)的技術(shù)和技術(shù)人才。此書以Cocos2d-x 3.0為基礎(chǔ),從入門知識(shí)到高級(jí)進(jìn)階,詳細(xì)講解了手游開發(fā)的十幾個(gè)大模塊,每個(gè)大模塊又包含了許多小的知識(shí)點(diǎn),是提高技術(shù)水平不可多得的一本書。
林順
觸控科技高級(jí)技術(shù)總監(jiān),Cocos2d-js作者
本書是由從業(yè)多年的開發(fā)者于浩洋所著,多年的互聯(lián)網(wǎng)巨頭從業(yè)經(jīng)驗(yàn)使得作者形成了比較扎實(shí)的知識(shí)體系。書中對(duì)基礎(chǔ)知識(shí)娓娓道來(lái),同時(shí)全書包括多個(gè)實(shí)例講解。大量的實(shí)例,讓所有知識(shí)深入淺出,不論你是有從業(yè)經(jīng)驗(yàn)的中級(jí)開發(fā)者還是初次使用Cocos2d-x的小白用戶,本書都是不錯(cuò)的選擇。
楊雍
泰然網(wǎng)創(chuàng)始人,Cocos2d-x技術(shù)推廣總監(jiān)
前言
記得第一次接觸移動(dòng)互聯(lián)網(wǎng)是在2008年左右,當(dāng)時(shí)互聯(lián)網(wǎng)應(yīng)用相當(dāng)普及,市場(chǎng)競(jìng)爭(zhēng)進(jìn)入紅海,絕大多數(shù)人認(rèn)為移動(dòng)互聯(lián)將成為下一個(gè)增長(zhǎng)點(diǎn),是很大的藍(lán)海,社會(huì)將進(jìn)入3G時(shí)代。大到三大運(yùn)營(yíng)商和一線互聯(lián)網(wǎng)公司,小到小公司和個(gè)人開發(fā)者都想進(jìn)入移動(dòng)互聯(lián),從3G大蛋糕中分到一塊利益。轉(zhuǎn)眼幾年過去,正如當(dāng)時(shí)預(yù)料的那樣,移動(dòng)互聯(lián)已經(jīng)深入人們的生活當(dāng)中,4G也悄悄來(lái)臨。在移動(dòng)互聯(lián)的發(fā)展過程中,蘋果公司起到了不可磨滅的作用,因?yàn)樗l(fā)布了能承載移動(dòng)互聯(lián)功能的新概念智能手機(jī)iPhone。于是乎,誕生了一大批移動(dòng)應(yīng)用和移動(dòng)游戲的開發(fā)商和個(gè)人開發(fā)者。其中以《瘋狂的小鳥》為代表的第一批手機(jī)游戲進(jìn)入人們的視線并大獲成功,之后手機(jī)游戲以比雨后春筍還瘋狂很多倍的速度成長(zhǎng)起來(lái)。各種類型的游戲出現(xiàn)在市場(chǎng)中,例如《我叫MT》《大掌門》《找你妹》及騰訊的天天游戲系列。
在手機(jī)游戲快速成長(zhǎng)的過程中,手機(jī)游戲開發(fā)框架也跟著發(fā)展起來(lái),其中最著名的就是Cocos2d家族,Cocos2d-iphone、Cocos2d-js、Cocos2d-java等,其中Cocos2d-iphone使用數(shù)最多。但是Cocos2d-iphone是用Objective-C開發(fā)的,只能用于開發(fā)iPhone平臺(tái)的游戲,如果想發(fā)布到Android平臺(tái),就要使用另外一種語(yǔ)言,幾乎重寫所有代碼。于是,中國(guó)有位叫王哲的“大神”,使用C++重新實(shí)現(xiàn)了一遍Cocos2d-iphone的API,使用C++開發(fā)的游戲不僅效率高,也能發(fā)布到iOS、Android、in、Linux等多個(gè)平臺(tái),真正實(shí)現(xiàn)了編寫一次、多平臺(tái)運(yùn)行的目的。
Cocos2d-x 3.0系列統(tǒng)一修改了類和接口(比如把類前面的CC去掉),使代碼更規(guī)范、更美觀。3.0系列重寫了紋理渲染方式,不再會(huì)產(chǎn)生成倍消耗內(nèi)存的情況,使游戲運(yùn)行效率更高、更穩(wěn)定。本書以Cocos2d-x 3.0版本為基礎(chǔ),記錄整理了筆者在學(xué)習(xí)和使用Cocos2d-x中遇到的問題和常用功能,以實(shí)踐為主,著重提高讀者的動(dòng)手開發(fā)能力,讓讀者從入門手游的菜鳥成為游戲開發(fā)界的大神。
本書的主要內(nèi)容如下。
第1章介紹Cocos2d-x的優(yōu)缺點(diǎn)和目錄結(jié)構(gòu),本書案例需要的環(huán)境搭建、交叉編譯以及打包部署。
第2章講解了Cocos2d-x中常用的數(shù)據(jù)類型和方法及一些宏定義。
第3章講解了Cocos2d-x的基本概念,即基礎(chǔ)節(jié)點(diǎn)Node、相機(jī)、導(dǎo)演、場(chǎng)景、布景、精靈。
接著由淺入深,第4章講解了如何使用Cocos2d-x創(chuàng)建用戶界面,如文本、菜單、滾動(dòng)框等基本控件,以及一些擴(kuò)展控件,如取色器、計(jì)步器、復(fù)選框等。
之后筆者用很多篇幅在第5章講解了使用Cocos2d-x創(chuàng)建動(dòng)作的方式,因?yàn)閯?dòng)作在游戲中是必不可少的重中之重,內(nèi)容包括移動(dòng)、跳躍、旋轉(zhuǎn)等簡(jiǎn)單動(dòng)作,以及按順序執(zhí)行或同時(shí)執(zhí)行的復(fù)雜動(dòng)作。
音樂在游戲中也不可或缺,好的音效給人耳目一新的感覺,本書第6章講解了使用Cocos2d-x播放、停止、暫停、繼續(xù)播放背景音樂和音效。
第7章介紹了瓷磚地圖相關(guān)的內(nèi)容,包括瓷磚地圖的概念、如何制作瓷磚地圖,如何在游戲中使用、操作瓷磚地圖等。
第8章講解了Cocos2d-x中的事件機(jī)制,包括觸摸事件、鼠標(biāo)事件、鍵盤事件,以觸摸事件為主要內(nèi)容。智能手機(jī)大多數(shù)都是觸摸屏,要監(jiān)聽用戶的觸摸行為,然后調(diào)用相應(yīng)的行為動(dòng)作,Cocos2d-x提供了一套觸摸事件機(jī)制,并且3.0系統(tǒng)重寫了該機(jī)制,使監(jiān)聽用戶觸摸行為更加方便快捷,同時(shí)Cocos2d-x還支持多點(diǎn)觸摸機(jī)制,增加玩家與手機(jī)的交互樂趣。
除此之外,進(jìn)行游戲時(shí)還產(chǎn)生很多數(shù)據(jù),這些數(shù)據(jù)有時(shí)需要保存下來(lái)以便下次使用,所以第9章介紹了多種保存數(shù)據(jù)的方式,比如UsderDefault、Plist、本地?cái)?shù)據(jù)庫(kù)SQLite等。
當(dāng)開發(fā)網(wǎng)絡(luò)游戲時(shí),客戶端要不斷地跟服務(wù)端進(jìn)行數(shù)據(jù)交換,第10章講解了如何使用HTTP、Sockets、WebSockets進(jìn)行網(wǎng)絡(luò)編程。
第11章介紹了物理引擎,它可以使游戲更加接近現(xiàn)實(shí)世界,給玩家更真實(shí)的體驗(yàn)。
第12章講解了紋理和動(dòng)畫,介紹了紋理的渲染方式并提供了幾個(gè)提高渲染效率的方法。動(dòng)畫部分講解了如何在游戲中播放幀動(dòng)畫、plist動(dòng)畫和骨骼動(dòng)畫。書中還穿插介紹了一些工具的使用方法,比如使用bitmap font generator制作自定義字體,使用TiledMap Editor制作編輯瓷磚地圖,使用SQLiteStudio管理SQLite數(shù)據(jù)庫(kù),使用CocoStudio制作編輯UI、動(dòng)畫、場(chǎng)景等。
第13章講解了休閑游戲2048的完整開發(fā)過程,核心內(nèi)容包括使用CocoStudio制作UI界面,UI界面與邏輯代碼的交互,使用UserDefault存取游戲數(shù)據(jù),數(shù)字方塊移動(dòng)、合并的邏輯等。
第14章講解了水滸卡牌游戲的完整開發(fā)過程,挑選了其中幾個(gè)典型的功能進(jìn)行了詳細(xì)講解,包括登錄界面、公共菜單、游戲首頁(yè)、英雄列表、地圖、推圖和戰(zhàn)斗界面等。本章內(nèi)容對(duì)于游戲開發(fā)人員具有很高的參考價(jià)值。
本書所有實(shí)例代碼在附錄A中有詳細(xì)說(shuō)明,讀者可到博文視點(diǎn)網(wǎng)站下載,地址:www.broadview.com.cn/23998。
附錄B詳細(xì)介紹了Cocos2d-x 3.X主要版本間的區(qū)別,用實(shí)例詳細(xì)說(shuō)明各個(gè)功能點(diǎn)的使用方法。
最后衷心感謝讀者的支持,如果有問題或想法可以到博客上留言交流,我的博客是http://blog.watchtech.net。
于浩洋
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。