
一、Cocos2D-X游戲開發技術精解的作品目錄
目錄第1章 Cocos2D-X引擎的介紹 11.1何為游戲引擎 11.1.1游戲的核心—引擎 11.1.2引擎的特點 21.1.3知名的引擎介紹 41.1.4引擎的分類 51.2 Cocos2D-X引擎的來歷 81.3引擎的版本 91.4下載與安裝 101.5引擎的組成 131.6技術文檔 151.7成功的游戲 171.8 Cocos2D-X引擎的體系 181.9 Cocos2D-X引擎的版權聲明 191.10本章小結 20第2章 Cocos2D-X引擎的開發環境 212.1跨平臺的開發 212.2建立開發環境 232.2.1 PC開發環境 232.2.2 Android開發環境 262.2.3 iOS開發環境 352.3引擎中的混合編譯 382.3.1 Java與C++的混合編譯 382.3.2 Objective-C與C++的混合編譯 412.4引擎的啟點 422.4.1應用程序入口 432.4.2引擎應用入口 442.5豐富的示例程序 462.5.1 TestCpp示例項目 462.5.2腳本示例項目 472.5.3 MoonWarriors示例項目 472.6本章小結 48第3章引擎的核心——渲染框架 493.1基本框架 503.1.1引擎的位置 503.1.2根源種子 513.1.3子類結構 573.2渲染框架 573.2.1框架結構 583.2.2攝像機類(CCCamera) 593.2.3導演類(CCDirector) 593.2.4場景類(CCScene) 623.2.5圖層類(CCLayer) 643.2.6精靈類(CCSprite) 683.2.7精靈集合類(CCSpriteBatchNode) 723.2.8精靈幀緩沖(CCSpriteFrameCache) 743.2.9 Zwoptex紋理編輯器 763.3文字與字體 803.3.1 TTF類型標簽(CCLabelTTF) 813.3.2 BMFont標簽類(CCLabelBMFont) 843.3.3 Atlas標簽類(CCLabelAtlas) 873.4菜單按鈕 893.5幾何繪制DrawPrimitives 943.6 CocosBuilder編輯器 953.6.1 CocosBuilder使用指南 953.6.2引擎中的應用 973.7本章小結 98第4章動作功能 1004.1概述 1004.2動作基類 1014.2.1動作類的繼承關系 1024.2.2動作基類CCAction的成員函數 1024.2.3類CCNode中與動作有關的函數 1044.3時間動作 1054.3.1及時動作 1054.3.2持續動作 1094.4組合動作類 1164.4.1序列動作類(CCSequence) 1164.4.2同步動作類(CCSpawn) 1184.4.3重復動作類(CCRepeat& CCRepeatForever) 1194.5可變速度類(CCEaseAction) 1204.5.1 CCEaseIn、CCEaseOut和CCEaseInOut 1224.5.2 EaseSineIn、EaseSineOut和EaseSineInOut 1244.5.3 CCEaseBackIn、CCEaseBackOut和CCEaseBackInOut 1244.5.4 EaseExponentialIn、EaseExponentialOut和EaseExponentialInOut 1254.5.5 CCEaseBounceIn、CCBounceOut和CCBounceInOut 1254.5.6 CCEaseElasticIn、CCEaseElasticOut和CCEaseElasticInOut 1254.6速度類(CCSpeed) 1254.7延遲動作類(CCDelay) 1274.8跟隨動作類(CCFollow) 1284.9擴展動作類 1294.9.1概述 1294.9.2翻頁動作(CCPageTurn3D) 1304.9.3波紋動作(CCWaves3D) 1304.9.4格子動作類(CCGridAction) 1314.10動畫動作類 1324.10.1精靈幀 1334.10.2精靈幀緩沖 1344.10.3動畫類 1354.10.4動畫動作 1364.11動畫編輯器 1364.11.1概述 1364.11.2 CocosBuilder編輯器中的精靈動畫 1374.11.3 SpriteX草莓編輯器 1384.11.4 MotionWelder動畫編輯器 1394.12樣例程序 1414.13本章小結 143第5章用戶交互 1475.1概述 1475.2玩家交互信息 1495.3觸摸操作的處理機制 1495.4接收操作 1535.5分發機制 1545.6處理響應 1575.7多點觸碰 1595.8加速計的響應函數 1615.9本章小結 162第6章游戲背景 1646.1概述 1646.2 2D游戲背景的類型 1646.3磚塊地圖編輯器 1666.3.1地圖編輯器概述 1676.3.2 Tile Map Editor(磚塊地圖編輯器) 1686.3.3制作一張游戲地圖 1706.3.4編輯器中的屬性功能 1726.4磚塊地圖Tile Map 1736.5地圖數據的格式 1756.5.1編輯器導出的文件 1756.5.2地圖文件分析 1766.6磚塊地圖的實現 1786.6.1磚塊地圖類CCTMXTiledMap 1796.6.2地圖圖層類CCTMXLayer 1816.6.3地圖物體層CCTMXObjectGroup 1836.7示例項目 1846.8背景的滾動與角色移動 1866.9多層背景滾動效果 1886.10本章小結 190第7章物理模擬與碰撞檢測 1927.1概述 1927.2游戲中的碰撞檢測 1937.3碰撞檢測的方法 1947.3.1平面幾何在碰撞檢測中的應用 1947.3.2物體的包圍盒 1977.3.3 AABB碰撞檢測技術 1987.4基本物理知識 1997.5你好!Box2D! 2017.5.1概述 2017.5.2物理世界 2027.5.3游戲中的兩個世界 2027.6 Box2D的基礎知識 2037.6.1概述 2047.6.2概念定義 2047.6.3物理引擎的模塊 2057.7引擎內核 2057.7.1基本配置 2067.7.2內存管理機制 2077.7.3工廠模式 2087.7.4數據單位 2087.7.5用戶數據 2097.8物理世界World 2107.8.1創建和摧毀一個世界 2107.8.2讓世界運轉起來 2117.8.3探索世界 2127.8.5 AABB查詢 2137.8.6光線投射(Ray Casts) 2147.9形狀Shapes 2167.9.1碰撞模塊 2167.9.2形狀Shape的作用 2167.9.3圓形(Circle Shapes) 2167.9.4多邊形(b2PolygonShape) 2177.10框架Fixtures 2187.10.1動態模塊(Dynamics Module) 2197.10.2框架(Fixtures) 2197.10.3密度(Density) 2197.10.4摩擦(Friction) 2207.10.5恢復(Restitution) 2207.10.6篩選(Filtering) 2207.10.7感應器(Sensors) 2217.11物體Bodies 2227.11.1物體定義 2227.11.2位置和角度(Position and Angle) 2237.11.3阻尼(Damping) 2237.11.4休眠參數(Sleep Parameters) 2247.11.5固定旋轉(Fixed Rotation) 2247.11.6子彈(Bullets) 2247.11.7活動狀態(Activation) 2257.11.8用戶數據(User Data) 2267.12關節(Joints) 2267.12.1關節的定義(JointDef) 2267.12.2關節的屬性 2277.12.3距離關節(Distance Joint) 2287.12.4旋轉關節(Revolute Joint) 2297.12.5移動關節(Prismatic Joint) 2307.12.6滑輪關節(Pulley Joint) 2317.12.7齒輪關節(Gear Joint) 2327.12.8鼠標關節(Mouse Joint) 2347.12.9線性關節(Line Joint) 2357.12.10焊接關節(Weld Joint) 2357.13接觸(Contants) 2357.13.1概述 2367.13.2接觸類(Contact Class) 2377.13.3訪問接觸(Accessing Contacts) 2377.13.4接觸監聽器(Contact Listener) 2387.13.5接觸篩選(Contact Filtering) 2407.14示例項目 2417.14.1 Box2dTest示例項目 2417.14.2調試繪圖DebugDraw 2437.14.3創建精靈剛體 2447.15本章小結 246第8章游戲中的聲音 2498.1概述 2498.2音樂與音效 2508.3聲音格式 2508.4 CocosDenshion聲音模塊 2528.5背景音樂操作函數 2538.6聲音音效操作函數 2558.7示例程序 2568.8本章小結 259第9章文件操作模塊 2619.1概述 2619.2引擎文件操作模塊 2619.3讀取文件 2639.4寫入文件 2679.5游戲中用戶數據 2699.5.1游戲中的用戶數據 2699.5.2用戶數據的基本類型 2709.5.3讀取與寫入操作 2719.6示例程序 2729.7本章小結 274第10章內存管理機制 27710.1內存管理概述 27710.2引用計數 27810.3自動釋放池 28010.3.1使用方法 28010.3.2實現原理 28110.4管理模式 28410.4.1引擎當中的應用 28410.4.2緩沖區 28510.5日志調試方式 28610.6本章小結 288第11章粒子系統 29011.1概述 29011.2粒子效果 29111.3粒子系統的來歷 29211.4引擎當中的粒子系統 29311.5粒子的生命周期 29411.6粒子的屬性 29511.7粒子發射器屬性 29611.7.1發射器共有的屬性 29611.7.2重力發射器模式(Gravity) 30411.7.3半徑發射器模式(Radius) 30611.8粒子效果編輯器 30711.8.1概述 30811.8.2 Particle Designer的使用方法 30811.8.3引擎中應用 31011.9本章小結 312第12章 Lua腳本語言 31412.1概述 31412.2 Lua腳本語言簡介 31512.3為什么需要它? 31612.3.1簡易性 31612.3.2可擴展性 31612.3.3高效性 31712.3.4可移植性 31712.4 Lua腳本語言的語法 31812.4.1類型與數值 31812.4.2表達式 32012.4.3語句 32212.4.4函數 32612.5 Lua在引擎中的應用 32812.5.1 Lua與C/C++ 32812.5.2引擎中的腳本引擎 32912.6樣例程序 33112.6.1腳本引擎初始化 33212.6.2游戲內容的實現腳本 33312.6.3農場層的實現 33412.6.4菜單層的實現 33712.7本章小結 338第13章 Cocos2D-HTML5引擎版本 34013.1概述 34013.2 HTML的發展史 34113.2.1 HTML版本 34113.2.2 XHTML版本 34213.2.3 HTML5是未來之星 34213.3 HTML5新特性 34213.3.1跨平臺的特性 34313.3.2 Canvas API 34313.3.3 WebGL 34413.3.4其他特性 34513.4 JavaScript語言基礎 34613.4.1概述 34613.4.2變量 34713.4.3數據類型 34813.4.4運算符 34813.4.5語句 35113.4.6對象 35213.4.7函數 35313.4.8事件 35413.5 Cocos2d-HTML5引擎 35613.5.1 HTML5版本介紹 35613.5.2安裝引擎 35713.5.3示例程序 35713.5.4引擎的架構 36013.6 JS Binding技術的實現 36213.6.1概述 36213.6.2 SpiderMonkey 36213.6.3示例程序 36313.7本章小結 364第14章引擎之外的附加功能 36614.1概述 36614.2網絡通訊支持 36714.2.1 HTTP介紹 36714.2.2 curl庫(libcurl) 36814.2.3 HTTP在引擎中的應用 36814.2.4 HTTP示例項目 37214.2.5 Socket的介紹 37614.2.6 BSD Socket在引擎中的應用 37814.3收費模式 37914.3.1下載計費 37914.3.2內置計費 38014.3.3廣告版本 38014.4社交網絡在游戲中的應用 38114.4.1 Game Center 38214.4.2 OpenFeint 38414.5數據分析 38514.5.1 Flurry介紹 38614.5.2友盟 390第15章 Cocos2D-X引擎的未來 39115.1概述 39115.2 Cocos2D引擎的走勢 39115.3 Cocos2D-X引擎的不足 39215.3.1豐富的UI 39315.3.2完善的工具 39315.3.3支持網絡通迅 39515.3.4版本的統一 39515.3.5數據安全 39615.4 Cocos2D-X引擎增強的功能 39615.4.1良好的中文支持 39715.4.2游戲基本框架 39715.4.3游戲邏輯支持 39815.4.4腳本化編程 39915.4.5可視化的操作界面 40015.5會不會有Cocos3D? 40115.6本章小結 403
二、BIGC 2021|國產引擎 Cocos :連接 IoT 開發者與游戲
Cocos引擎董事長陳昊芝參與了 BIGC 2021北京國際游戲創新大會,并在現場分享了國產游戲引擎 Cocos的技術蝶變。
自2010年以 Cocos2d-x進入移動游戲開發領域始,10余年間 Cocos引擎已經成長為覆蓋游戲、教育、電商、數字孿生種種場景的全能通用型引擎,并在全球擁有150萬的注冊開發者,30萬的月活躍開發者,遍布全球超過203個國家和地區,覆蓋超過16億玩家設備。
被 Unity寫入招股書列為競爭對手,與 Unreal,Unity并列為全球三大游戲引擎的Cocos也是全球首個支持華為鴻蒙系統的引擎。
補課 3D能力,進一步讓游戲開發更簡單
在程序員們既往經驗中,Cocos引擎是 2D游戲的霸主,3D游戲的新手。
2D游戲上無論是基于 Cocos2d-x的第一個爆款《捕魚達人》還是近兩年火熱的《劍與遠征》,總是能帶給人們驚喜與歡樂。
專注于 2D的雙刃劍另一面是 Cocos引擎很長一段時間不擅長于 3D游戲的構建。
好在 Cocos引擎一直沒有放棄“補課”。BIGC上,陳昊芝展示了兩段視頻,一段是類似《原神》風格的 3D小游戲渲染,一段是使用 Cocos Creator 3.3渲染的賽博朋克風 3D手游渲染。
兩段視頻中,前者展示的是 Cocos引擎易用性與輕量化,后者展示的是在多光源、多頂點、大場景下,Cocos引擎的性能和 3D畫面效果(延遲渲染管線技術,Cluster Light Culling,Cluster Reflection Probe,指數高度霧等多個 Cocos Creator 3.3特性)。
陳昊芝表示:“從2019年 Cocos正式發布 3D版本的 Creator,到2021年 Cocos Creator編輯器正式合并 2D和 3D工作流,今天我們在工具上已經可以實現過去無法企及的全場景編輯、3D工作流、各種物理、光源效果,且底層我們也開始支持延遲管線等渲染優化和支持能力。”
“這些比起今天 Unreal,Unity的最新版本和能力還有很大差距,但在我們自己的角度,一切只要開始進入了正確的軌道,技術、算法、工程的實現就已經是可以預估的狀態了。”
覆蓋所有帶屏設備,引擎工具與內容延伸至 IoT
游戲引擎的發展是與軟硬件平臺變遷同步的。
如 Unreal伴隨著 PC端游起家,Unity與 Cocos伴隨著移動端游戲起家,Unreal和 Unity分別與微軟
蘋果等公司合作緊密,Cocos提供的 IDE+Runtime也是眾多廠商首選,游戲引擎與軟硬件廠商聯動密切。
當 Unreal在數字環境中重建真實世界,Unity在部署跨平臺環境,Cocos在進一步輕量化下沉的陳昊芝也分享了他對未來引擎可以應用于哪些場景的思索。
“最近有朋友對我說他們從2019年開始做懸浮歌詞音箱,歌詞特效部分是使用 Cocos引擎制作,這樣做出來的效果很炫酷,他們認為游戲引擎在下一代 IoT市場有很大的機會。”
陳昊芝繼續分享到,今年上海車展上,卡迪拉克純電概念車 LYRIQ是使用 Unreal做的車載 3D場景,沃爾沃的智能座艙則是使用 Unity實現,游戲引擎早已經跨越游戲成為普適性工具。
引擎在接下來的階段要覆蓋的可能是所有帶“屏幕”的設備,新的帶屏設備,都需要內容的填充、體驗的保障。這些帶屏設備的使用場景很多是訂閱制,是游戲工具以及內容的延伸。
未來無論是 XR設備,還是智能健身、電動車的智能座艙,甚至智能手表、智能會議系統,對于游戲開發者都是新的藍海。
“如 Cocos引擎目前在 ADAS,HMI等方面已經有了方案積累,如今中國多數智能電視的互動界面也是基于 Cocos開發,近期 Cocos接到的智能手表上實現虛擬偶像口型互動、動作互動的需求 Cocos也已經實現。Cocos也在支持包括智能健身設備的屏幕互動市場。”陳昊芝表示。
“我們希望更多的開發者可以關注到新的市場與新的機會,用我們游戲開發者的技術、產品、創造力為更多的領域帶來改變。”
三、Cocos游戲開發中的序列幀動畫
Cocos游戲開發中的序列幀動畫
序列幀動畫是一種動畫制作技術,它通過一系列連續的靜態圖像(稱為幀)以快速的速度播放來模擬連續的動作。在Cocos游戲開發中,序列幀動畫是實現動畫效果的重要手段之一。
一、序列幀動畫的基本概念
序列幀動畫的每一幀都是獨立的圖像,它們按照特定的順序播放,從而產生了動畫的效果。這些幀圖像在視覺上通常與前一幀有所不同,這樣在播放時就能夠給人一種連續變化的感覺。在Cocos中,序列幀動畫常用于角色動畫、特效動畫以及環境動畫等多個方面。
二、序列幀動畫的應用
角色動畫:角色行走、跳躍、攻擊、受傷等動作可以使用序列幀動畫來呈現。每個動作都可以由一系列幀組成,通過播放這些幀來模擬動作的流暢變化。
特效動畫:游戲中的各種特效,如爆炸、火焰、法術釋放等,也可以使用序列幀動畫來表現。這些特效可以通過一系列幀圖像來展現,從而營造出震撼的視覺效果。
環境動畫:游戲場景中的環境元素,如水流、樹葉飄動、天氣變化等,同樣可以使用序列幀動畫來實現。這些動畫可以增加游戲場景的生動感和交互性。
三、Cocos中實現序列幀動畫的步驟
資源準備:
從美術團隊獲取序列幀圖片資源。
如果資源是連續的圖像,需要使用工具(如PngSplit)將其拆分成單獨的幀圖像。
使用圖集生成工具(如TexturePackerGUI)將拆分后的幀圖像合并成圖集,以便在游戲中高效使用。
序列幀動畫編輯:
在Cocos編輯器中創建工程,并將資源拷貝到工程目錄中。
在場景中添加一個Sprite精靈,并為其添加一個Animation組件。
進入動畫編輯器,逐幀設置Sprite的spriteFrame屬性,以指定每一幀要顯示的圖像。
保存動畫,并設置動畫的播放參數(如循環次數、播放速度等)。
效果演示:
在場景中復制多個Sprite精靈,并為它們應用相同的動畫組件,以展示動畫效果。
運行游戲,觀察動畫的播放效果,并根據需要進行調整和優化。
四、示例圖片展示
通過以上步驟和示例圖片,我們可以清晰地了解在Cocos游戲開發中如何使用序列幀動畫來創建豐富的動畫效果。希望這些信息能對您的游戲開發工作有所幫助。









