第1章 图形 1
1.1 概述 1
1.2 绘制精灵 1
1.2.1 预备 2
1.2.2 实战 2
1.2.3 原理 5
1.3 为精灵着色 6
1.3.1 预备 6
1.3.2 实战 6
1.3.3 原理 8
1.4 精灵动画 9
1.4.1 预备 9
1.4.2 实战 9
1.4.3 原理 12
1.4.4 补充 13
1.5 绘制OpenGL图元 13
1.5.1 预备 13
1.5.2 实战 14
1.5.3 原理 16
1.5.4 补充 17
1.6 播放视频文件 17
1.6.1 预备 17
1.6.2 实战 18
1.6.3 原理 19
1.7 网格、粒子和动态模糊特效 20
1.7.1 预备 20
1.7.2 实战 20
1.7.3 原理 23
1.8 使用Retina显示模式 23
1.8.1 预备 23
1.8.2 实战 24
1.8.3 原理 24
1.9 1D和2D缓冲动作 25
1.9.1 预备 25
1.9.2 实战 25
1.9.3 原理 27
1.10 渲染和3D图形材质 27
1.10.1 预备 27
1.10.2 实战 27
1.10.3 原理 30
1.10.4 补充 30
1.11 渲染材质填充的多边形 30
1.11.1 预备 30
1.11.2 实战 31
1.11.3 原理 35
1.11.4 补充 35
1.12 材质多边形动画 35
1.12.1 预备 35
1.12.2 实战 36
1.12.3 原理 37
1.13 使用层变换调色板 37
1.13.1 预备 37
1.13.2 实战 37
1.13.3 原理 40
1.14 使用CCTexture2DMutable实现调色板变换 41
1.14.1 预备 41
1.14.2 实战 41
1.14.3 原理 43
1.15 使用AWTextureFilter实现模糊和文字阴影 43
1.15.1 预备 44
1.15.2 实战 44
1.15.3 原理 46
1.15.4 补充 46
1.16 使用屏幕截图 46
1.16.1 预备 46
1.16.2 实战 46
1.16.3 原理 47
1.16.4 补充 47
1.17 使用CCParallaxNode 47
1.17.1 预备 48
1.17.2 实战 48
1.17.3 原理 48
1.17.4 补充 49
1.18 使用glColorMask添加光效 49
1.18.1 预备 50
1.18.2 实战 50
1.18.3 原理 52
1.18.4 补充 52
第2章 用户输入 53
2.1 概述 53
2.2 点触、按住和拖曳输入 53
2.2.1 预备 54
2.2.2 实战 54
2.2.3 原理 56
2.2.4 补充 57
2.2.5 参考 57
2.3 深度检测下的输入 57
2.3.1 预备 57
2.3.2 实战 57
2.3.3 原理 58
2.4 创建按钮 58
2.4.1 预备 59
2.4.2 实战 59
2.4.3 原理 62
2.5 创建方向板 63
2.5.1 预备 63
2.5.2 实战 63
2.5.3 原理 66
2.6 创建模拟操纵杆 67
2.6.1 预备 67
2.6.2 实战 67
2.6.3 原理 72
2.7 使用加速度感应器模拟方向盘 72
2.7.1 预备 72
2.7.2 实战 73
2.7.3 原理 73
2.8 使用加速度感应器实现3D旋转 74
2.8.1 预备 74
2.8.2 实战 74
2.8.3 原理 75
2.9 双指放缩 75
2.9.1 预备 75
2.9.2 实战 75
2.9.3 原理 77
2.9.4 补充 77
2.10实现手势 78
2.10.1 预备 78
2.10.2 实战 78
2.10.3 原理 81
2.10.4 补充 81
第3章 文件及数据 82
3.1 概述 82
3.2 读取PLIST数据文件 82
3.2.1 预备 82
3.2.2 实战 83
3.2.3 原理 85
3.3 读取JSON数据文件 86
3.3.1 预备 86
3.3.2 实战 86
3.3.3 原理 87
3.4 读取XML数据文件 88
3.4.1 预备 88
3.4.2 实战 88
3.4.3 原理 92
3.4.4 参考 93
3.5 使用NSUserDefaults存储简单数据 93
3.5.1 预备 93
3.5.2 实战 93
3.5.3 原理 94
3.5.4 参考 95
3.6 将对象打包成归档文件 95
3.6.1 预备 95
3.6.2 实战 95
3.6.3 原理 98
3.7 修改嵌套元数据 99
3.7.1 预备 100
3.7.2 实战 100
3.7.3 原理 101
3.8 将数据存入PLIST文件 101
3.8.1 预备 102
3.8.2 实战 102
3.8.3 原理 104
3.9 将数据存入SQLite数据库 105
3.9.1 预备 105
3.9.2 实战 105
3.9.3 原理 109
3.10 使用Core Data保存数据 109
3.10.1 预备 109
3.10.2 实战 109
3.10.3 原理 114
3.10.4 补充 115
第4章 物理 116
4.1 概述 116
4.2 Box2D安装及绘图调试 116
4.2.1 预备 116
4.2.2 实战 117
4.2.3 原理 120
4.3 建立碰撞响应程序 121
4.3.1 预备 122
4.3.2 实战 122
4.3.3 原理 126
4.3.4 补充 126
4.4 使用不同的图形 127
4.4.1 预备 127
4.4.2 实战 127
4.4.3 原理 129
4.5 拖曳和碰撞过滤器 130
4.5.1 预备 130
4.5.2 实战 130
4.5.3 原理 134
4.6 操控物理属性 134
4.6.1 预备 135
4.6.2 实战 135
4.6.3 原理 137
4.7 施加冲力 137
4.7.1 预备 137
4.7.2 实战 138
4.7.3 原理 140
4.8 应用力 140
4.8.1 预备 140
4.8.2 实战 140
4.8.3 原理 142
4.8.4 补充 143
4.9 异步销毁物体 143
4.9.1 预备 143
4.9.2 实战 143
4.9.3 原理 147
4.10 使用关节 147
4.10.1 预备 148
4.10.2 实战 148
4.10.3 原理 150
4.11 创建一辆汽车 150
4.11.1 准备 150
4.11.2 实战 151
4.11.3 原理 154
4.11.4 补充 155
4.12 人物移动 155
4.12.1 预备 155
4.12.2 实战 155
4.12.3 原理 157
4.13 模拟子弹 158
4.13.1 预备 158
4.13.2 实战 158
4.13.3 原理 162
4.14 模拟和绘制绳索 162
4.14.1 预备 163
4.14.2 实战 163
4.14.3 原理 165
4.15 创建一个俯视角的2.5D游戏引擎 166
4.15.1 准备 166
4.15.2 实战 166
4.15.3 原理 171
4.15.4 补充 172
第5章 场景与菜单 173
5.1 概述 173
5.2 场景切换 173
5.2.1 预备 174
5.2.2 实战 174
5.2.3 原理 176
5.3 场景间的过渡 176
5.3.1 预备 177
5.3.2 实战 177
5.3.3 原理 178
5.3.4 补充 179
5.4 使用CCLayerMultiplex 179
5.4.1 预备 179
5.4.2 实战 180
5.4.3 原理 181
5.5 使用CCLabel 181
5.5.1 预备 181
5.5.2 实战 182
5.5.3 原理 182
5.6 使用CCMenu 183
5.6.1 预备 183
5.6.2 实战 183
5.6.3 原理 186
5.7 创建带阴影的菜单标签 187
5.7.1 预备 188
5.7.2 实战 188
5.7.3 原理 189
5.7.4 补充 189
5.8 UIKit报警对话 189
5.8.1 预备 190
5.8.2 实战 190
5.8.3 原理 191
5.9 包装UIKit 191
5.9.1 预备 191
5.9.2 实战 191
5.9.3 原理 193
5.10 创建可拖曳窗口 194
5.10.1 预备 194
5.10.2 实战 194
5.10.3 原理 196
5.11 创建水平滚动菜单 196
5.11.1 预备 196
5.11.2 实战 197
5.11.3 原理 198
5.12 建立垂直滑动菜单网格 198
5.12.1 预备 198
5.12.2 实战 198
5.12.3 原理 199
5.13 创建进度条 200
5.13.1 预备 200
5.13.2 实战 200
5.13.3 原理 204
5.14 创建迷你地图 204
5.14.1 预备 205
5.14.2 实战 205
5.14.3 原理 206
第6章 声音 207
6.1 概述 207
6.2 播放声音和音乐 207
6.2.1 预备 207
6.2.2 实战 208
6.2.3 原理 210
6.2.4 补充 211
6.3 修改音频的属性 211
6.3.1 预备 212
6.3.2 实战 212
6.3.3 原理 214
6.3.4 补充 215
6.4 声音和音乐的渐变 215
6.4.1 预备 215
6.4.2 实战 215
6.4.3 原理 218
6.5 在游戏中使用音频 219
6.5.1 预备 219
6.5.2 实战 219
6.5.3 原理 220
6.5.4 补充 221
6.6 在游戏中使用位置声音 221
6.6.1 预备 221
6.6.2 实战 221
6.6.3 原理 224
6.7 测量背景音乐 225
6.7.1 预备 225
6.7.2 实战 225
6.7.3 原理 227
6.8 用于动画的对话测量 227
6.8.1 预备 227
6.8.2 实战 228
6.8.3 原理 230
6.9 流式音频 231
6.9.1 预备 231
6.9.2 实战 231
6.9.3 原理 233
6.9.4 补充 234
6.10 录制音频 234
6.10.1 预备 234
6.10.2 实战 234
6.10.3 原理 236
6.11使用iPod音乐库 238
6.11.1 预备 238
6.11.2 实战 238
6.11.3 原理 242
6.11.4 补充 243
6.12 创建一个MIDI合成器 244
6.12.1 预备 244
6.12.2 实战 244
6.12.3 原理 246
6.12.4 补充 246
6.13 语音识别和文本语音转换 246
6.13.1 预备 247
6.13.2 实战 247
6.13.3 原理 249
第7章 AI和逻辑 251
7.1 概述 251
7.2 处理路径点AI 251
7.2.1 预备 251
7.2.2 实战 252
7.2.3 原理 254
7.3 向移动目标“开火” 255
7.3.1 预备 255
7.3.2 实战 255
7.3.3 原理 257
7.4 AI视线 258
7.4.1 预备 258
7.4.2 实战 259
7.4.3 原理 260
7.4.4 补充 261
7.5 使用Boids实现AI群集 261
7.5.1 预备 261
7.5.2 实战 262
7.5.3 原理 264
7.6 网格上的A*寻径 265
7.6.1 预备 265
7.6.2 实战 266
7.6.3 原理 269
7.6.4 补充 270
7.7 在Box2D环境中实现A*寻径 270
7.7.1 预备 270
7.7.2 实战 270
7.7.3 原理 273
7.7.4 补充 274
7.8 在TMX栅格地图中实现A*寻径 274
7.8.1 预备 274
7.8.2 实战 274
7.8.3 原理 275
7.9 在带有滚动的地图中寻径 275
7.9.1 预备 275
7.9.2 实战 276
7.9.3 原理 281
7.10 运行Lua脚本 282
7.10.1 预备 283
7.10.2 实战 283
7.10.3 原理 285
7.11 动态载入Lua脚本 286
7.11.1 预备 287
7.11.2 实战 287
7.11.3 原理 288
7.12 使用Lua实现对话树 289
7.12.1 预备 289
7.12.2 实战 289
7.12.3 原理 292
第8章 技巧、工具与移植 293
8.1 概述 293
8.2 使用Cocos2d-iPhone的测试平台 293
8.2.1 预备 293
8.2.2 实战 294
8.2.3 原理 294
8.3 使用Zwoptex打包纹理 294
8.3.1 准备 294
8.3.2 实战 294
8.3.3 原理 295
8.3.4 参考 295
8.4 使用Tiled建立关卡 295
8.4.1 预备 295
8.4.2 实战 296
8.4.3 原理 298
8.4.4 参考 300
8.5 使用JSONWorldBuilder创建关卡 300
8.5.1 预备 300
8.5.2 实战 300
8.5.3 原理 304
8.6 使用CocosBuilder创建场景 306
8.6.1 预备 306
8.6.2 实战 306
8.6.3 原理 307
8.7 使用Cocos2d-X 308
8.7.1 预备 308
8.7.2 实战 308
8.7.3 原理 310
8.8 使用Cocos3d 310
8.8.1 预备 311
8.8.2 实战 311
8.8.3 原理 312
8.9 发布应用程序 313
8.9.1 预备 313
8.9.2 实战 313