本书是目前Coco2D领域内容最全面、系统和深入的一本著作,也是技术版本最新的一本著作。由国内iOS和Cocos2D领域的先驱和自身专家撰写,不仅系统讲解了Cocos2D的使用方法、技术要点、工作原理、高级知识、开发技巧、最佳实践和性能优化,而其还通过精心设计的典型案例详细讲解了Cocos2D游戏设计与开发的完整过程,极具启发性和可操作性。此外,还介绍了如何进行应用的测试与发布,以及Cocos3D、Cocos2D-x、Cocos2D-HTML 5、Cocos2D-Python等衍生技术。
全书共19章,分为三个部分:基础篇(1~9章)系统讲解了Cocos2D v2.0的功能特性、使用方法、技术要点和工作原理,通过超级玛丽等3个经典游戏将Cocos2D中的核心类、动作、特效、动画、文本渲染系统、事件处理机制、声音、瓷砖地图、Box2D等内容贯穿其中,真是有趣,易于理解;实战篇(10~12章),通过对Angel Panda和Angry Panda两款经典游戏的设计与开发过程的讲解,为读者展示了使用Cocos2D开发游戏的完整流程,可操作性极强;高级篇(13~19章),着重讲解了Cocos2D v2.0的高级知识、实用开发技巧和最佳实践,包括粒子系统、CocosBuilder和Shader、在游戏中添加对IAP的支持、性能分析与优化、产品的测试/发布/推广,以及Cocos2D的延伸技术
封面图
目录
- 前言
- 第一部分基础篇
- 第1章开始前的准备工作/ 2
- 1.1什么是Cocos2D/ 2
- 1.1.1Cocos2D的特点/ 2
- 1.1.2Cocos2D的主要功能/ 2
- 1.1.3Cocos2D应用/ 3
- 1.2下载与安装/ 4
- 1.2.1下载Cocos2D/ 4
- 1.2.2安装Cocos2D模板/ 6
- 1.2.3创建Cocos2D-iPhone的帮助文档/ 9
- 1.2.4使用Cocos2D中内置的项目/ 10
- 1.3HelloCocos2D实例/ 10
- 1.3.1创建HelloCocos2D项目/ 10
- 1.3.2添加小飞机/ 11
- 1.3.3让飞机飞行/ 13
- 1.4深入学习HelloCocos2D项目/ 13
- 1.4.1初识场景和节点/ 13
- 1.4.2实现代码分析/ 14
- 1.5在设备上运行HelloCocos2D项目/ 23
- 1.5.1使用Xcode的自动设置/ 23
- 1.5.2在设备上编译运行项目/ 24
- 1.6本章小结/ 24
- 第2章你的第一款iPhone游戏—垂直射击游戏/ 25
- 2.1准备工作/ 25
- 2.2构建游戏场景/ 28
- 2.2.1添加资源目录/ 28
- 2.2.2添加游戏背景/ 28
- 2.2.3添加玩家飞机/ 29
- 2.2.4添加敌机/ 30
- 2.3玩家交互/ 33
- 2.3.1添加加速计移动/ 33
- 2.3.2添加子弹并射击/ 35
- 2.4碰撞检测/ 37
- 2.5游戏音效/ 38
- 2.6最后的点缀/ 39
- 2.6.1添加计分和玩家生命值/ 39
- 2.6.2添加游戏胜利和结束画面/ 42
- 2.7本章小结/ 44
- 第3章Cocos2D核心类/ 45
- 3.1Cocos2D节点基础知识/ 45
- 3.1.1节点层级图/ 45
- 3.1.2什么是锚点/ 46
- 3.2CCNode节点类/ 47
- 3.2.1CCNode类的属性/ 47
- 3.2.2CCNode类的方法/ 50
- 3.3CCScene场景类/ 57
- 3.3.1CCTransitionScene场景切换/ 58
- 3.3.2Cocos2D支持的场景过渡效果/ 59
- 3.4CCLayer层类/ 60
- 3.4.1CCLayer类的作用/ 61
- 3.4.2CCLayerColor色彩层/ 62
- 3.4.3CCLayerGradient渐变色层/ 63
- 3.4.4CCMenu菜单类/ 63
- 3.5CCTexture纹理类/ 65
- 3.5.1纹理和纹理图集/ 65
- 3.5.2CCTexture2D、CCTextureCache和CCTextureAtlas/ 66
- 3.6CCSprite精灵类/ 67
- 3.6.1CCSprite类的属性及方法/ 67
- 3.6.2CCSpriteBatchNode精灵表单/ 71
- 3.6.3CCSpriteFrame精灵帧/ 73
- 3.6.4CCSpriteFrameCache精灵帧缓存/ 74
- 3.7Cocos2D中的单例/ 76
- 3.7.1Cocos2D中的常用单例/ 77
- 3.7.2CCDirector导演类/ 77
- 3.8垂直射击游戏—加载游戏数据/ 81
- 3.8.1注释draw方法和背景/ 81
- 3.8.2加载游戏资源/ 82
- 3.8.3修改AppDelegate.m文件/ 88
- 3.8.4修改HelloWorldLayer/ 89
- 3.8.5代码重构/ 90
- 3.9本章小结/ 93
- 第4章Cocos2D中的动作、特效与动画/ 94
- 4.1Cocos2D中的节点动作/ 94
- 4.1.1运行ActionsTest测试/ 94
- 4.1.2Cocos2D中的动作类/ 96
- 4.2动作的分类及使用/ 98
- 4.2.1基本动作/ 98
- 4.2.2组合动作/ 102
- 4.2.3Ease动作/ 105
- 4.2.4延迟动作/ 107
- 4.2.5方法回调动作/ 107
- 4.2.6块语句调用动作/ 112
- 4.2.7反转动作/ 116
- 4.2.8特殊动作/ 117
- 4.3垂直射击游戏:加载进度条与滚动背景/ 117
- 4.3.1使用CCProgressTo和CCProgressFromTo动作添加进度条/ 117
- 4.3.2使用CCFollow和CCParallaxNode动作添加滚动背景/ 119
- 4.4Cocos2D中的特效/ 122
- 4.4.1Cocos2D中的网格/ 122
- 4.4.2特效的种类及使用/ 123
- 4.4.3让节点对象返回最初状态/ 127
- 4.5Cocos2D中的动画/ 127
- 4.5.1Cocos2D中与动画相关的类/ 127
- 4.5.2在Cocos2D中实现动画效果/ 128
- 4.6使用Zwoptex工具实现动画效果/ 129
- 4.6.1安装Zwoptex工具/ 129
- 4.6.2制作精灵表单/ 130
- 4.6.3制作精灵动画/ 132
- 4.7垂直射击游戏—添加飞行和爆炸动画/ 134
- 4.7.1添加玩家飞机飞行动画/ 134
- 4.7.2添加飞机爆炸效果/ 136
- 4.8本章小结/ 138
- 第5章Cocos2D中的文本渲染系统/ 139
- 5.1文本渲染系统的组成/ 139
- 5.1.1CCLabelTTF类/ 139
- 5.1.2CCLabelAtlas类/ 145
- 5.1.3CCLabelBMFont类/ 147
- 5.2标签的对齐方式/ 151
- 5.3使用第三方工具创建字体纹理图集/ 152
- 5.3.1Hiero工具的使用方法/ 153
- 5.3.2创建字体图集步骤/ 153
- 5.4垂直射击游戏—美化游戏界面/ 155
- 5.4.1渲染文本/ 155
- 5.4.2实现倒计时功能/ 156
- 5.5本章小结/ 158
- 第6章Cocos2D中的事件处理机制/ 159
- 6.1iOS中的交互事件处理/ 159
- 6.1.1什么是用户输入事件/ 159
- 6.1.2多点触摸事件处理机制/ 160
- 6.1.3重力感应事件处理机制/ 162
- 6.2Cocos2D中的触摸事件处理/ 164
- 6.2.1如何处理触摸事件/ 165
- 6.2.2模板中自带的TouchesTest项目/ 168
- 6.2.3实战—随手指移动的小球/ 169
- 6.3Cocos2D中的重力感应事件/ 172
- 6.3.1如何处理重力感应事件/ 172
- 6.3.2实战—受加速计控制的小球/ 172
- 6.4垂直射击游戏—暂停游戏/ 177
- 6.4.1PauseLayer类的实现/ 177
- 6.4.2CustomMenu类的实现/ 180
- 6.4.3游戏主场景添加暂停层/ 180
- 6.4.4PauseLayerProtocol代理/ 181
- 6.5本章小结/ 182
- 第7章Cocos2D世界的声音/ 183
- 7.1认识CocosDenshion音效引擎/ 183
- 7.1.1CocosDenshion重要API/ 183
- 7.1.2CocosDenshion相关类/ 184
- 7.1.3Cocos2D支持的CocosDenshion/ 185
- 7.2SimpleAudioEngine使用方法/ 186
- 7.2.1添加背景音乐/ 187
- 7.2.2控制音乐的播放和停止/ 188
- 7.2.3判断当前是否播放背景音乐/ 192
- 7.2.4添加音效/ 194
- 7.3CDSoundEngine使用方法/ 195
- 7.3.1设置CDSoundEngine/ 195
- 7.3.2播放背景音乐和音效/ 199
- 7.4游戏菜单中的声音设置选项/ 202
- 7.5垂直射击游戏—GameOver/ 208
- 7.5.1实现背景音乐暂停功能/ 208
- 7.5.2实现菜单场景/ 208
- 7.5.3实现高分榜场景/ 215
- 7.5.4实现GameOver场景/ 221
- 7.6本章小结/ 223
- 第8章在Cocos2D中使用瓷砖地图/ 224
- 8.1认识瓷砖地图/ 224
- 8.2Tiled地图编辑器/ 225
- 8.2.1安装Tiled/ 225
- 8.2.2用Tiled绘制地图/ 226
- 8.2.3在地图中添加对象/ 230
- 8.3在项目中使用瓷砖地图/ 232
- 8.3.1TMX文件解析/ 232
- 8.3.2Cocos2D中的瓷砖地图类/ 233
- 8.3.3在项目中载入TMX地图/ 238
- 8.3.4使用TMX地图中的对象/ 239
- 8.4超级玛丽—实现简单的原型/ 242
- 8.4.1准备工作/ 243
- 8.4.2创建高清版本Tiled地图/ 244
- 8.4.3在代码里加载Tiled地图/ 248
- 8.4.4利用WBTMXTool工具制作普清版本Tiled地图/ 250
- 8.4.5添加遥感控制器/ 252
- 8.5本章小结/ 254
- 第9章物理引擎—更真实的Cocos2D世界/ 255
- 9.1游戏物理引擎概况/ 255
- 9.1.1物理引擎的应用/ 255
- 9.1.2常见的游戏物理引擎/ 257
- 9.2认识Box2D / 257
- 9.2.1Box2D碰撞检测和处理系统/ 258
- 9.2.2Box2D中的核心概念/ 259
- 9.3示例项目HelloBox2D详解/ 265
- 9.3.1使用模板创建HelloBox2D项目/ 265
- 9.3.2解读HelloBox2D默认项目代码/ 267
- 9.3.3完善HelloBox2D项目/ 280
- 9.4Box2D实战—物理射击游戏/ 291
- 9.4.1准备工作/ 292
- 9.4.2创建会转动手臂的小人/ 294
- 9.4.3发射子弹/ 300
- 9.4.4使用PhysicEditor工具制作凹槽/ 303
- 9.4.5凹槽实现升降机效果/ 306
- 9.4.6处理碰撞传感器/ 307
- 9.4.7加入更多障碍/ 309
- 9.5超级玛丽—Box2D与Tiled结合/ 310
- 9.5.1添加玛丽和物体的物理属性/ 310
- 9.5.2使玛丽行走和跳跃/ 319
- 9.5.3为游戏中的金币和箱子添加物理属性/ 325
- 9.5.4碰撞检测—吃金币/ 329
- 9.5.5游戏特效—吸金币/ 332
- 9.5.6加入游戏音效/ 335
- 9.5.7设计胜利和失败条件/ 335
- 9.6本章小结/ 338
- 第二部分实战篇
- 第10章Angel Panda游戏的设计与实现/ 340
- 10.1iOS游戏完整的制作流程/ 340
- 10.2Angel Panda游戏设计/ 342
- 10.2.1Angel Panda的创意来源/ 342
- 10.2.2Angel Panda的故事背景及游戏规则/ 342
- 10.2.3Angel Panda的游戏体验流程/ 343
- 10.3开发前的准备工作/ 343
- 10.3.1下载并安装合适的开发工具/ 343
- 10.3.2将项目分解成不同的模块/ 344
- 10.3.3准备游戏中所需要的资源/ 345
- 10.4Angel Panda游戏的实现/ 345
- 10.4.1使用Cocos2D模板创建新项目/ 345
- 10.4.2设置游戏主场景/ 350
- 10.4.3添加游戏角色/ 354
- 10.4.4添加用户交互机制/ 368
- 10.4.5添加游戏逻辑/ 370
- 10.4.6添加音效/ 374
- 10.5本章小结/ 377
- 第11章AngryPanda游戏的设计与框架搭建/ 378
- 11.1AngryPanda游戏设计/ 378
- 11.1.1AngryPanda的创意来源/ 378
- 11.1.2AngryPanda的故事背景及游戏规则/ 378
- 11.1.3AngryPanda的游戏体验流程/ 379
- 11.2开发前的准备工作/ 379
- 11.2.1下载并安装合适的开发工具/ 379
- 11.2.2将项目分解成不同的模块/ 380
- 11.2.3准备游戏需要的资源/ 381
- 11.2.4使用Box2D模板创建新项目/ 382
- 11.3数据存储和游戏设置/ 383
- 11.3.1创建和实现GameData类/ 384
- 11.3.2GameData类中的重要方法/ 386
- 11.3.3创建Constants.h头文件/ 389
- 11.4游戏中的音效管理/ 390
- 11.4.1创建GameSounds类/ 390
- 11.4.2GameSounds类中的重要方法/ 391
- 11.5游戏中的辅助界面/ 391
- 11.5.1游戏开始界面/ 392
- 11.5.2游戏介绍界面/ 400
- 11.5.3关卡选择界面/ 404
- 11.5.4关卡结束界面/ 407
- 11.6本章小结/ 410
- 第12章Angry Panda游戏主场景的实现/ 411
- 12.1Box2D世界的物体/ 411
- 12.1.1创建抽象物体类/ 411
- 12.1.2创建熊猫角色/ 414
- 12.1.3创建平台物体/ 418
- 12.1.4创建外星怪物/ 419
- 12.1.5创建遮挡物体/ 423
- 12.1.6创建并放置攻击目标/ 425
- 12.2实现游戏的主场景/ 427
- 12.2.1创建MainScene类/ 428
- 12.2.2场景的视觉呈现/ 431
- 12.2.3如何与用户交互/ 437
- 12.2.4实现游戏的逻辑机制/ 442
- 12.3游戏中的碰撞检测机制/ 443
- 12.3.1创建ContactListener类/ 444
- 12.3.2碰撞检测机制的实现/ 444
- 12.4本章小结/ 447
- 第三部分高级篇
- 第13章粒子系统/ 450
- 13.1Cocos2D中的粒子系统/ 450
- 13.1.1粒子系统相关的类/ 450
- 13.1.2Cocos2D内置的粒子系统/ 452
- 13.2手动创建粒子系统示例/ 453
- 13.2.1创建ParticleEffect项目/ 453
- 13.2.2添加Cocos2D内置的粒子系统/ 454
- 13.2.3手动创建粒子系统类/ 455
- 13.2.4设置粒子系统的属性/ 459
- 13.3plist文件/ 464
- 13.3.1particle.plist文件内容/ 464
- 13.3.2使用plist文件创建粒子系统/ 466
- 13.4粒子工具Particle Designer/ 468
- 13.4.1下载安装Particle Designer/ 468
- 13.4.2Particle Designer工具栏/ 469
- 13.4.3如何设置Emitter Config属性/ 470
- 13.4.4如何在项目中使用粒子系统/ 472
- 13.5本章小结/ 473
- 第14章CocosBuilder和Shader/ 474
- 14.1CocosBuilder初体验/ 474
- 14.1.1下载安装CocosBuilder/ 474
- 14.1.2查看Example目录结构/ 476
- 14.1.3如何打开样例文件/ 477
- 14.2第一个CocosBuilder项目/ 478
- 14.2.1创建HelloWorldCocosBuilder场景/ 478
- 14.2.2加载HelloWorldCocosBuilder场景/ 483
- 14.2.3建立文档与代码的连接/ 484
- 14.2.4完善HelloWorldCocosBuilder场景/ 486
- 14.3HelloWorldCocosBuilder项目功能完善/ 489
- 14.3.1制作GameMenu场景/ 490
- 14.3.2制作About场景/ 493
- 14.3.3发布ZIP格式场景资源文件/ 495
- 14.3.4如何支持多个设备分辨率/ 496
- 14.4着色器/ 496
- 14.4.1着色器的种类及工作原理/ 497
- 14.4.2编写自己的Shader程序/ 500
- 14.4.3如何为Sprite定制顶点着色器/ 503
- 14.4.4如何定制片段着色器/ 507
- 14.4.5旋风效果示例/ 509
- 14.5本章小结/ 512
- 第15章在游戏中添加对Game Center的支持/ 513
- 15.1什么是Game Center/ 513
- 15.1.1Game Center的功能/ 513
- 15.1.2Game Center的特点/ 513
- 15.2在项目中添加对Game Center的支持/ 514
- 15.2.1注册iOS开发者账号/ 514
- 15.2.2为应用创建并设置App ID/ 514
- 15.2.3在iTunes Connect中注册应用/ 517
- 15.2.4开启对Game Center的支持/ 520
- 15.2.5在iTunes Connect中添加成就系统/ 520
- 15.2.6在iTunes Connect中设置积分排行榜/ 523
- 15.3示例项目GKTapper详解/ 524
- 15.3.1添加Game Kit框架/ 525
- 15.3.2检查Game Center是否可用/ 526
- 15.3.3验证玩家是否登录Game Center/ 527
- 15.3.4实现成就系统/ 530
- 15.3.5实现积分排行榜/ 535
- 15.4本章小结/ 539
- 第16章在游戏中添加对IAP的支持/ 540
- 16.1什么是IAP/ 540
- 16.1.1IAP的功能/ 540
- 16.1.2IAP中的商品类型/ 540
- 16.1.3IAP实现机制/ 542
- 16.2Store Kit Framework介绍/ 545
- 16.2.1Store Kit Framework中的购买核心类/ 545
- 16.2.2Store Kit Framework中的商品核心类/ 548
- 16.2.3SKDownload类/ 550
- 16.2.4Store Kit Framework中的协议/ 550
- 16.3在iTunes Connect配置IAP/ 551
- 16.3.1在iTunes Connect中添加商品信息/ 552
- 16.3.2在iTunes Connect中添加沙盒测试账号/ 558
- 16.4在项目中添加与IAP相关的代码/ 560
- 16.4.1IAPGame项目简介/ 560
- 16.4.2在项目中添加Store Kit框架/ 562
- 16.4.3添加MyStore类/ 563
- 16.5在设备中测试并提交审核/ 576
- 16.6本章小结/ 583
- 第17章游戏性能分析与优化/ 584
- 17.1如何发现性能瓶颈/ 584
- 17.1.1Instruments基本功能/ 584
- 17.1.2Instruments中内置的分析工具/ 585
- 17.1.3如何使用Time Profiler工具模板/ 586
- 17.1.4如何使用OpenGL ES Driver工具模板/ 588
- 17.1.5使用空白模板创建定制分析工具/ 590
- 17.2Cocos2D内置的性能分析工具/ 591
- 17.2.1CCProfiler和CCProfilingTimer/ 591
- 17.2.2如何使用性能分析工具/ 593
- 17.3优化Cocos2D游戏性能/ 595
- 17.3.1在Cocos2D中开启自动引用计数/ 595
- 17.3.2使用CCSpriteBatchNode 替代CCSprite/ 597
- 17.3.3提升游戏性能的其他技巧/ 598
- 17.4本章小结/ 600
- 第18章产品的测试、发布与推广/ 601
- 18.1用户体验测试/ 601
- 18.1.1测试用户的选择/ 601
- 18.1.2产品测试的步骤/ 601
- 18.2产品的上传与发布/ 610
- 18.2.1加入iOS开发者计划/ 610
- 18.2.2在App Store中发布产品/ 618
- 18.3App产品的宣传与推广/ 636
- 18.3.1产品推广的原因/ 636
- 18.3.2产品推广的方法/ 636
- 18.4本章小结/ 638
- 第19章Cocos2D的延伸/ 639
- 19.1Cocos3D简介/ 639
- 19.1.1Cocos3D的基本特性/ 639
- 19.1.2Cocos3D核心类简介/ 640
- 19.1.3下载并安装Cocos3D/ 642
- 19.2Cocos2D-x 简介/ 643
- 19.2.1创建iOS版的HelloWorld项目/ 643
- 19.2.2创建基于Cocos2D-x的Android项目/ 648
- 19.3Cocos2D-HTML5详解/ 661
- 19.3.1Cocos2D-HTML5简介/ 661
- 19.3.2下载安装Cocos2D-HTML5/ 662
- 19.3.3安装配置WebServer(可选)/ 664
- 19.3.4解析helloHTML5World项目/ 665
- 19.4Cocos2D-Python简介/ 671
- 19.5本章小结/ 671