第Ⅰ部分 规划与创建2D游戏 3
第1章 欢迎进入Android游戏世界 3
1.1 Android游戏编程 3
1.2 从一个好故事开始 4
1.2.1 故事缘何重要 5
1.2.2 编写你的故事 6
1.3 本书的学习方式 8
1.4 获取Android开发工具 9
1.5 选择Android版本 11
1.6 小结 12
第2章 射击游戏“星空战士” 13
2.1 “星空战士”背后的故事 13
2.2 是什么构成了游戏 15
2.2.1 理解游戏引擎 16
2.2.2 理解具体游戏代码 17
2.2.3 探索“星空战士”引擎 19
2.3 创建“星空战士”项目 20
2.4 小结 22
第3章 启动:制作菜单 23
3.1 构建启动画面 23
3.1.1 创建活动 24
3.1.2 创建一个新类 24
3.1.3 将类转变为活动 25
3.1.4 创建启动画面图片 29
3.1.5 导入图片 30
3.1.6 处理R.java文件 31
3.1.7 创建布局文件 31
3.1.8 编辑XML文件 32
3.1.9 使用FrameLayout 33
3.1.10 添加图片与文本 33
3.1.11 连接StarfighterActivity与布局 36
3.1.12 创建渐变效果 38
3.1.13 线程化游戏 40
3.1.14 创建游戏线程 41
3.1.15 设置新的意图 43
3.1.16 终止活动 44
3.2 创建主菜单 46
3.2.1 添加按钮图片 46
3.2.2 设置布局 48
3.2.3 连接按钮 49
3.2.4 添加onClickListener 51
3.3 添加音乐 53
3.3.1 创建音乐服务 54
3.3.2 播放音乐 59
3.4 小结 63
第4章 绘制环境 65
4.1 渲染背景 65
4.1.1 创建活动 66
4.1.2 创建渲染器 70
4.1.3 使用OpenGL加载图片 76
4.1.4 滚动背景 87
4.2 添加第二个层 94
4.2.1 加载第二个纹理 96
4.2.2 滚动第二个层 97
4.2.3 使用矩阵 98
4.2.4 完成scrollBackground2()方法 100
4.3 以每秒60帧的速度运行 102
4.3.1 暂停游戏循环 103
4.3.2 清除OpenGL缓冲 105
4.4 修改主菜单 106
4.5 小结 107
第5章 创建角色 109
5.1 精灵动画 109
5.2 加载角色 111
5.2.1 创建纹理映射数组 112
5.2.2 将纹理加载到角色上 116
5.2.3 创建游戏循环 119
5.3 移动角色 121
5.3.1 绘制角色的默认状态 122
5.3.2 编写PLAYER RELEASE动作 124
5.3.3 向左移动角色 127
5.3.4 加载正确的精灵 128
5.3.5 加载第二帧动画 132
5.3.6 向右移动角色 134
5.3.7 加载右侧动画 136
5.4 通过触摸事件移动角色 139
5.4.1 解析MotionEvent 140
5.4.2 捕获ACTION_UP与ACTION_DOWN 142
5.5 调整FPS延迟 144
5.6 小结 145
第6章 添加敌人 147
6.1 中局管理 147
6.2 创建纹理类 148
6.3 创建敌人类 152
6.3.1 添加新的精灵图表 152
6.3.2 创建SFEnemy类 154
6.3.3 贝塞尔曲线 157
6.4 小结 162
第7章 为敌人添加基本的人工智能 165
7.1 为敌人准备好AI 165
7.1.1 创建每个敌人的逻辑 167
7.1.2 初始化敌人 169
7.1.3 加载精灵图表 171
7.2 回顾AI 172
7.2.1 创建moveEnemy()方法 172
7.2.2 创建enemies[]数组循环 173
7.2.3 通过AI逻辑移动敌人 173
7.3 创建拦截机AI 174
7.3.1 调整顶点 175
7.3.2 锁定玩家位置 176
7.3.3 实现斜率公式 179
7.4 创建侦察机AI 186
7.4.1 设置随机点以移动侦察机 188
7.4.2 沿着贝塞尔曲线移动 189
7.5 创建战舰AI 192
7.6 小结 194
第8章 防御 195
8.1 创建武器精灵图表 195
8.2 为武器设定轨道 199
8.2.1 创建武器数组 199
8.2.2 添加第2个精灵图表 199
8.2.3 初始化武器 200
8.2.4 移动武器炸弹 201
8.2.5 检测屏幕边界 203
8.2.6 调用firePlayerWeapons()方法 205
8.3 实现碰撞检测 206
8.3.1 应用碰撞检测 206
8.3.2 创建detectCollisions()方法 207
8.3.3 检测特定的碰撞 208
8.3.4 删除无效炸弹 209
8.4 扩展所学内容 211
8.5 小结 212
8.6 回顾关键的2D代码 212
第9章 发布游戏 233
9.1 准备清单 233
9.2 准备签名、对齐及发布 234
9.2.1 检测AndroidManifest文件 236
9.2.2 创建密钥 237
9.3 小结 239
第Ⅱ部分 创建3D游戏 243
第10章 斑点猎人:创建3D游戏 243
10.1 2D游戏与3D游戏的比较 243
10.2 创建3D项目 244
10.2.1 BlobhunterActivity.java 244
10.2.2 BHGameView 245
10.2.3 BHGameRenderer 245
10.2.4 BHEngine 247
10.3 创建3D对象测试 247
10.3.1 创建常量 248
10.3.2 创建BHWalls类 248
10.3.3 实例化BHWalls类 251
10.3.4 映射图片 252
10.3.5 使用gluPerspective()方法 253
10.3.6 创建drawBackground()方法 255
10.3.7 收尾工作 257
10.4 小结 259
第11章 创建身临其境的环境 261
11.1 使用BHWalls类 261
11.2 通过多个BHWalls实例创建通道 262
11.3 使用BHCorridor类 263
11.3.1 构建BHCorridor类 263
11.3.2 使用vertices[]数组构建多个墙体 265
11.3.3 创建texture[]数组 266
11.3.4 创建draw()方法 269
11.3.5 添加墙体纹理 273
11.4 调用BHCorridor 274
11.5 小结 275
第12章 在3D环境中进行导航 277
12.1 创建控制界面 277
12 1.1 编辑BHEngine 278
12.1.2 编辑BlobhunterActivity 279
12.1.3 向前移动玩家 280
12.2 穿过通道 281
12.3 调整玩家的视野 283
12.4 小结 284
12.5 回顾关键的3D代码 284