图书目录

目    录

第Ⅰ部分  规划与创建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