目 录
第Ⅰ部分 规划与创建2D游戏
第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游戏
第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
