內容簡介
本書深入系統地講解了Cocos2dx 3.10遊戲開發的理論與實踐,書中內容涵蓋了Cocos2dx 3.x各方面的知識點與示例分析。這些內容包括如何搭建Cocos2dx的開發環境(iOS和Android平台)、Cocos2dx的工程結構、核心類和相關的API、標籤、選單、控制項、本地化、事件處理機制、網路技術、動作、調度、繪圖API、動畫、存儲技術、Sprite3D、瓦片地圖、粒子系統、物理引擎、骨骼動畫、ObjectiveC、Swift、C++和Java互動的方式。本書的第18章提供了一個完整的案例——星空大戰,這個案例是一款完整的射擊類遊戲,類似於雷電遊戲。該遊戲使用了本書介紹的基本知識點,通過這個案例,讀者可以更進一步鞏固基本理論知識。
目錄
第1章初識Cocos2dx
1.1跨平台的由來
1.2跨平台開發模式的種類和優缺點
1.2.1虛擬機與跨平台技術
1.2.2Web與跨平台技術
1.2.3跨平台編譯技術
1.2.4為每個平台定製本地套用
1.3跨平台遊戲引擎
1.3.1什麼是跨平台遊戲引擎
1.3.2有哪些遊戲引擎可以跨平台
1.4Cocos2dx橫空出世
1.4.1Cocos2dx的前世今生
1.4.2Cocos2dx的特點
1.5小結
第2章搭建和使用跨平台Cocos2dx開發環境
2.1使用Cocos2dx開發遊戲需要準備些什麼
2.2Cocos2dx 3.10開發環境的最低要求
2.3讓Eclipse支持C++ 11
2.4Cocos2dx 3.10開發環境的安裝、配置和使用
2.4.1Cocos2dx 3.10的目錄結構
2.4.2使用cocos建立跨平台工程
2.4.3編譯和運行Cocos2dx 3.10 for iOS/Mac程式
2.4.4編譯和運行Cocos2dx 3.10 for Android程式
2.4.5編譯和運行Cocos2dx 3.10 for Win32程式
2.5Cocos2dx 3.10例子代碼的使用
2.6小結
第3章Cocos2dx默認工程模板的架構和原始碼分析
3.1Cocos2dx實現跨平台的原理
3.2默認場景類HelloWorldScene的實現原理分析
3.3控制橫豎屏切換
3.4小結
第4章Cocos2dx中的核心類
4.1導演類(Director)
4.1.1Director類與初始化Cocos2dx
4.1.2結束、暫停與恢復Cocos2dx程式
4.1.3獲取視窗的尺寸和位置
4.1.4Director類中的其他成員方法
4.2節點類(Node)
4.2.1節點類的功能
4.2.2節點類的成員方法
4.2.3Cocos2dx對象的創建、自動釋放(Autorelease)與ARC
4.2.4CREATE_FUNC宏與create方法
4.2.5Cocos2dx中的坐標系
4.2.6節點的移動、縮放和旋轉
4.3場景類(Scene)
4.3.1創建場景
4.3.2運行和切換場景
4.3.3場景切換的各種特效
4.4圖層類(Layer)
4.4.1Layer類的基本套用
4.4.2Layer的子類
4.4.3顏色圖層類(LayerColor)
4.4.4顏色漸變圖層類(LayerGradient)
4.4.5多圖層管理類(LayerMultiplex)
4.5精靈類(Sprite)
4.5.1Sprite類
4.5.2貼圖類(Texture2D)和貼圖緩衝類(TextureCache)
4.5.3精靈批處理類(SpriteBatchNode)
4.5.4精靈框架類(SpriteFrame)
4.5.5精靈框架緩衝類(SpriteFrameCache)
4.5.6九宮格縮放精靈類(Scale9Sprite)
4.6集合類(Vector和Map)
4.7小結
第5章標籤、選單與控制項
5.1標籤類
5.1.1LabelTTF標籤(使用TTF字型檔)
5.1.2LabelAtlas標籤(需要截取圖像)
5.1.3LabelBMFont標籤(使用FNT字型檔)
5.1.4生成FNT字型檔
5.2選單(Menu)與選單項(MenuItem)
5.2.1Menu類
5.2.2標籤選單項(MenuItemLabel)
5.2.3字型選單項(MenuItemFont)
5.2.4精靈選單項(MenuItemSprite)
5.2.5圖像選單項(MenuItemImage)
5.2.6開關選單項(MenuItemToggle)
5.3控制項
5.3.1UI布局(Layout)
5.3.2文本控制項(Text、TextAtlas和TextBMFont)
5.3.3按鈕控制項(Button)
5.3.4文本輸入框控制項(TextField)
5.3.5高級文本輸入框控制項(EditBox)
5.3.6複選框控制項(CheckBox)
5.3.7開關控制項(ControlSwitch)
5.3.8圖像框控制項(ImageView)
5.3.9進度條控制項(LoadingBar)
5.3.10滑桿控制項(Slider)
5.3.11高級滑桿控制項(ControlSlider)
5.3.12步進控制項(ControlStepper)
5.3.13列表控制項(ListView)
5.3.14表格控制項(TableView)
5.3.15滾動視圖控制項(ScrollView)
5.3.16分頁控制項(PageView)
5.3.17顏色選擇控制項(ControlColourPicker)
5.4小結
第6章本地化
6.1自適應螢幕解析度
6.1.1尺寸類型及螢幕適配原理
6.1.2Cocos2dx中的各種尺寸深度詳解
6.1.3解析度策略(ResolutionPolicy)
6.1.4通過設計尺寸進行螢幕適配
6.1.5通過內容縮放因子進行螢幕適配
6.1.6為每一個Node單獨調整尺寸
6.2Cocos2dx多語言適配
6.3小結
第7章Cocos2dx中的事件處理機制
7.1觸摸事件與移動節點
7.2多點觸摸
7.3鍵盤回響事件
7.4滑鼠回響事件
7.5加速度感測器事件
7.6自定義事件
7.7小結
第8章網路技術
8.1HttpClient類
8.1.1傳送HTTP Get請求
8.1.2傳送Http Post請求
8.2WebSocket類
8.3SocketIO類
8.4小結
第9章Cocos2dx中的動作類
9.1所有動作的基類(Action)
9.2位置(Position)動作
9.2.1沿直線勻速移動動作(MoveBy/MoveTo)
9.2.2跳躍動作(JumpBy/JumpTo)
9.2.3貝塞爾曲線動作(BezierBy/BezierTo)
9.2.4固定張力的樣條曲線動作(CatmullRomBy/CatmullRomTo)
9.2.5可變張力的樣條曲線動作(CardinalSplineBy/CardinalSplineTo)
9.3旋轉與縮放動作
9.3.1旋轉動作(RotateBy/RotateTo)
9.3.2縮放動作(ScaleBy/ScaleTo)
9.4執行規則動作
9.4.1順序執行動作(Sequence)
9.4.2並行動作(Spawn)
9.4.3重複執行動作(Repeat)
9.4.4無限循環動作(RepeatForever)
9.4.5反序動作(ResverseTime)
9.5控制節點顯示和隱藏的動作
9.5.1閃爍動作(Blink)
9.5.2淡入淡出動作(FadeIn/FadeOut)
9.5.3透明度漸變動作(FadeTo)
9.5.4顏色漸變動作(TintBy/TintTo)
9.6可立即執行的動作
9.7回調函式動作(CallFunc/CallFuncN)
9.8變速動作(Ease Action)
9.8.1冪加速動作(EaseIn)
9.8.2冪減速動作(EaseOut)
9.8.3冪加速減速動作(EaseInOut)
9.8.4指數加速動作(EaseExponentialIn)
9.8.5指數減速動作(EaseExponentialOut)
9.8.6指數加速減速動作(EaseExponentialInOut)
9.8.7正弦加速動作(EaseSineIn)
9.8.8正弦減速動作(EaseSineOut)
9.8.9正弦加速減速動作(EaseSineInOut)
9.8.10彈性加速動作(EaseElasticIn)
9.8.11彈性減速動作(EaseElasticOut)
9.8.12彈性加速減速動作(EaseElasticInOut)
9.8.13彈跳加速動作(EaseBounceIn)
9.8.14彈跳減速動作(EaseBounceOut)
9.8.15彈跳加速減速動作(EaseBounceInOut)
9.8.16回退加速動作(EaseBackIn)
9.8.17回退減速動作(EaseBackOut)
9.8.18回退加速減速動作(EaseBackInOut)
9.9格線動作(Grid Action)
9.9.1實現測試格線動作的基類
9.9.22D波浪動作(Waves)
9.9.33D波浪動作(Waves3D)
9.9.4水平3D翻轉動作(FlipX3D)
9.9.5垂直3D翻轉動作(FlipY3D)
9.9.63D震動動作(Shaky3D)
9.9.73D透鏡動作(Lens3D)
9.9.83D波紋動作(Ripple3D)
9.9.9流體動作(Liquid)
9.9.10旋轉變形動作(Twirl)
9.9.113D瓦片震動動作(ShakeTiles3D)
9.9.123D瓦片破碎動作(ShatteredTiles3D)
9.9.133D瓦片洗牌動作(ShuffleTiles)
9.9.14瓦片從左下角到右上角淡出動作(FadeOutTRTiles)
9.9.15瓦片從右上角到左下角淡出動作(FadeOutBLTiles)
9.9.16瓦片向上淡出動作(FadeOutUpTiles)
9.9.17瓦片向下淡出動作(FadeOutDownTiles)
9.9.18關閉瓦片動作(TurnOffTiles)
9.9.193D波浪瓦片動作(WavesTiles3D)
9.9.203D跳躍瓦片動作(JumpTiles3D)
9.9.21拆分行動作(SplitRows)
9.9.22拆分列動作(SplitCols)
9.9.233D翻頁動作(PageTurn3D)
9.10其他動作
9.10.1綁定節點和動作(TargetedAction)
9.10.2扭曲動作(SkewBy和SkewTo)
9.10.3軌道照相機動作(OrbitCamera)
9.10.4延遲運行動作(DelayTime)
9.11小結
第10章調度器、繪圖API與動畫
10.1調度器(Scheduler)
10.1.1update定時器調度
10.1.2設定update定時器的優先權
10.1.3自定義調度器
10.1.4停止調度器
10.2繪圖API
10.3動畫
10.3.1基於繪圖API與調度器的動畫
10.3.2幀(Frame)動畫
10.4小結
第11章數據存儲技術
11.1使用UserDefault讀寫KeyValue類型的數據
11.2讀寫流檔案
11.3操作XML檔案
11.3.1使用tinyxml2生成XML檔案
11.3.2使用tinyxml2以DOM方式讀取XML檔案
11.3.3使用SAXParser以SAX方式讀取XML檔案
11.4使用rapidjson讀寫JSON檔案
11.5使用SQLite資料庫
11.6小結
第12章Sprite3D技術
12.1什麼是Sprite3D
12.2Cocos2dx支持哪些3D模型格式
12.3裝載obj格式的3D模型檔案
12.4裝載和使用c3t和c3b格式的3D模型檔案
12.4.1使用fbxconv將fbx轉換為c3t和c3b格式
12.4.2旋轉的3D怪物
12.4.3游泳的海龜
12.5小結
第13章Cocos2dx中的瓦片和地圖
13.1瓦片和地圖編輯器
13.1.1瓦片地圖的種類和用途
13.1.2瓦片地圖編輯器(Tiled Map Editor)
13.1.3用Tiled編輯地圖
13.2在Cocos2dx中使用地圖
13.2.1在程式中顯示地圖
13.2.2隱藏和顯示圖層
13.2.3編輯圖塊
13.2.4獲取圖塊的屬性值
13.2.5在地圖中添加精靈
13.2.6讓精靈只在道路上移動
13.2.7改變遮擋關係(zOrder和PositionZ)
13.2.8拖動地圖
13.2.9在45度角地圖上種樹
13.2.10使用對象層
13.3小結
第14章粒子系統
14.1Cocos2dx內置的標準粒子特效
14.1.1群星閃爍
14.1.2幽靈鬼火
14.1.3群星爆炸
14.2粒子特效屬性詳解
14.3自定義粒子特效
14.3.1五彩旋轉戒指
14.3.2放大版的群星閃爍
14.4可視化粒子特效設計器
14.4.1Particle Designer(僅適用於OS X)
14.4.2Particle Editor(只適用於Windows系統)
14.5通過plist檔案實現粒子特效
14.5.1彗星特效
14.5.2用plist檔案實現放大版的群星閃爍
14.6燃燒的聖火
14.7小結
第15章物理引擎
15.1物理引擎概述
15.1.1什麼是物理引擎
15.1.2物理引擎在遊戲中的地位
15.1.3Box2D和Chipmunk的對比
15.2Cocos2dx 3.x中抽象封裝的物理引擎
15.2.1抽象物理引擎概述
15.2.2使用抽象物理引擎創建Body(剛體)
15.3Android平台如何使用物理引擎
15.4改變Android和iOS平台默認的物理引擎
15.5碰撞檢測
15.6隻撞擊一側邊緣的碰撞檢測
15.7足球撞擊特效
15.8骷髏堆中的足球
15.9用重力感應控制的足球
15.10小結
第16章骨骼動畫
16.1骨骼動畫概述
16.2骨骼動畫的優勢
16.3Spine骨骼動畫
16.3.1Spine骨骼動畫簡介
16.3.2在Cocos2dx中使用Spine骨骼動畫
16.3.3Spine簡介
16.3.4用Spine導入骨骼動畫圖像資源
16.3.5完成圖像的擺放
16.3.6綁定骨骼
16.3.7在骨骼上旋轉圖像
16.3.8設計骨骼動畫
16.4Armature骨骼動畫
16.4.1安裝和運行Cocos Studio
16.4.2將圖像導入工程
16.4.3使用圖像資源
16.4.4創建骨骼
16.4.5綁定骨骼和圖像
16.4.6設計骨骼動畫
16.4.7導出骨骼動畫
16.4.8在Cocos2dx中使用骨骼動畫
16.5小結
第17章ObjectiveC、Swift、C++和Java互動
17.1C++與ObjectiveC的互動
17.1.1C++調用ObjectiveC API
17.1.2通過ObjectiveC獲取Web數據
17.1.3ObjectiveC調用C++ API
17.1.4.mm檔案到底起什麼作用
17.2C++調用Swift API
17.2.1創建Swift檔案
17.2.2編寫Swift類
17.2.3自動生成的頭檔案的位置和命名規則
17.2.4自動生成的頭檔案的內容
17.2.5自動生成頭檔案非得用@objc嗎
17.2.6用ObjectiveC調用Swift API
17.2.7C++調用Swift API
17.3Swift調用ObjectiveC API
17.3.1在橋接頭檔案中引用ObjectiveC的頭檔案
17.3.2在Swift原始碼檔案中調用Objective API
17.3.3ObjectiveC調用Swift API
17.3.4聲明和實現C++風格的方法
17.3.5C++調用Swift API
17.4Android平台多語言互動
17.4.1C++調用Java類的無參數靜態方法
17.4.2C++調用有參數的靜態Java方法
17.4.3C++調用Java類的非靜態方法
17.4.4C++調用Java API向SQLite資料庫中插入信息
(獲取Context對象)
17.4.5C++調用Java API查詢SQLite資料庫中的記錄
17.4.6Java調用C++ API
17.5小結