第1章 LibGDX简介与项目创建 1
1.1 关于LibGDX 2
1.2 LibGDX 1.2.0的新特性 2
1.2.1 Graphics模块 2
1.2.2 Audio模块 3
1.2.3 Input模块 4
1.2.4 文件I/O和存储模块 4
1.2.5 数学与物理 4
1.2.6 实用模块 4
1.2.7 工具 5
1.3 进入社区 5
1.4 LiGDX的安装与配置 5
1.4.1 安装JDK 6
1.4.2 安装Eclipse集成开发环境 9
1.4.3 下载LibGDX 10
1.4.4 安装Android SDK 10
1.4.5 运行Eclipse IDE并安装插件 18
1.5 创建第一个LibGDX应用 23
1.5.1 使用旧版工具创建项目 24
1.5.2 使用新版工具创建基于Gradle构建的项目 32
1.6 gdx-setup与gdx-setup-ui 36
1.7 步入开发生涯 37
1.8 成功的关键在于计划 39
1.9 第一个游戏——Canyon Bunny 39
实现游戏行为简介 40
1.10 总结 41
第2章 跨平台开发——一次构建,多平台部署 42
2.1 demo应用——它们是如何在一起工作的 42
2.2 LibGDX后端 45
2.2.1 轻量级的Java游戏库 45
2.2.2 Android 46
2.2.3 WebGL 46
2.2.4 RoboVM(iOS后端) 46
2.3 LibGDX核心模块 47
2.3.1 应用模块 47
2.3.2 图形模块 50
2.3.3 音频模块 50
2.3.4 输入模块 51
2.3.5 文件模块 52
2.3.6 网络模块 52
2.4 LibGDX的应用生命周期和对应接口 52
2.5 启动类 54
2.5.1 在桌面平台运行demo应用 54
2.5.2 在Android平台运行demo应用 56
2.5.3 在支持WebGL的浏览器上运行demo应用 60
2.5.4 在iOS设备上运行demo应用 64
2.6 demo应用代码解析 68
2.6.1 主类代码 69
2.6.2 调试器和代码热交换 73
2.7 总结 77
第3章 配置游戏 78
3.1 创建Canyon Bunny项目 78
3.2 使用类图分析Canyon Bunny游戏 80
3.3 基础部分 82
3.3.1 实现Constants类 82
3.3.2 实现CanyonBunnyMain类 83
3.3.3 实现WorldController类 83
3.3.4 实现WorldRenderer类 84
3.4 组织在一起 85
3.4.1 构建游戏循环 85
3.4.2 添加测试精灵 88
3.4.3 添加调试控制 92
3.4.4 添加CameraHelper类 95
3.4.5 添加相机调试控制 96
3.5 总结 99
第4章 资源打包 100
4.1 替换Android应用图标 100
4.2 替换iOS应用图标 102
4.3 创建纹理集 103
4.4 资源的加载与跟踪 108
4.5 组织资源 108
4.6 测试资源 114
4.7 处理关卡数据 117
4.8 总结 118
第5章 创建场景 119
5.1 创建游戏对象 120
5.1.1 rock对象 121
5.1.2 mountains对象 123
5.1.3 water overlay对象 125
5.1.4 clouds对象 126
5.2 实现关卡加载器 128
5.3 组建游戏世界 132
5.4 实现游戏GUI 135
5.4.1 分数GUI 138
5.4.2 生命数GUI 139
5.4.3 GUIFPS计数器 139
5.4.4 渲染游戏GUI 140
5.5 总结 140
第6章 添加演员 141
6.1 实现游戏的演员对象 141
6.1.1 创建gold coin对象 143
6.1.2 创建feather对象 144
6.1.3 创建bunny head对象 145
6.1.4 更新rock对象 152
6.2 完成关卡加载器 152
6.3 添加游戏逻辑 154
6.3.1 添加碰撞检测系统 154
6.3.2 失去生命、结束游戏以及限制相机的移动范围 160
6.3.3 添加“GAME OVER”文本和feather图标GUI 161
6.4 总结 163
第7章 菜单和选项 165
7.1 多屏管理 165
7.2 探索Scene2D UI、TableLayout和skins 171
7.3 使用场景图创建菜单UI 172
7.4 创建菜单屏幕 175
7.4.1 添加background层 179
7.4.2 添加对象层 179
7.4.3 添加Logo层 180
7.4.4 添加控制层 180
7.4.5 添加Options窗口层 181
7.5 创建Options窗口 185
使用游戏配置 190
7.6 小结 192
第8章 特效 193
8.1 使用粒子系统创建复杂特效 193
8.2 创建灰尘粒子特效 198
8.3 移动云朵 200
8.4 利用线性插值(Lerp)平滑运动 202
模拟石块在水面漂浮 203
8.5 山丘滚动效果 204
8.6 增强游戏GUI 205
8.6.1 失去生命事件 206
8.6.2 分数递增事件 207
8.7 总结 209
第9章 屏幕切换 210
9.1 屏幕切换技术 210
9.1.1 实现切换效果 217
9.1.2 关于插值算法的研究 217
9.1.3 创建fade切换效果 218
9.1.4 创建slide切换效果 220
9.1.5 创建slice切换效果 223
9.2 总结 225
第10章 音效管理 226
10.1 播放音乐和音效 226
10.1.1 Sound接口 227
10.1.2 Music接口 228
10.2 直接访问音频设备 228
10.2.1 AudioDevice接口 229
10.2.2 AudioRecorder接口 229
10.3 使用声音发生器 230
10.3.1 sfxr声音发生器 230
10.3.2 cfxr声音发生器 231
10.3.3 bfxr声音发生器 231
10.4 为Canyon Bunny游戏添加背景音乐和声音特效 232
10.5 总结 239
第11章 高级技术 240
11.1 使用Box2D模拟物理 240
11.1.1 Box2D的基础概念 241
11.1.2 Physics Body Editor 243
11.1.3 为项目添加Box2D 243
11.1.4 为Canyon Bunny创建“rain carrots” 246
11.1.5 实现rain carrots 251
11.2 在LibGDX中使用着色器 260
11.2.1 创建单色过滤着色程序 261
11.2.2 为Canyon Bunny游戏添加着色程序 262
11.3 添加可选输入 265
11.4 总结 268
第12章 动画 269
12.1 通过动作操作演员 269
12.1.1 操作演员对象的动作类 270
12.1.2 控制时间和顺序的动作 271
12.2 菜单屏幕动画 271
12.2.1 gold coins动画和bunny head动画 272
12.2.2 为菜单按钮和选项窗口添加动画 273
12.3 利用序列图片创建动画 275
12.3.1 打包动画资源 276
12.3.2 选择动画的播放模式 277
12.4 为游戏屏幕添加帧动画 277
12.4.1 定义和准备新的动画 278
12.4.2 为gold coin对象添加动画 280
12.4.3 为bunny head对象添加动画 281
12.5 总结 285
第13章 3D基础 286
13.1 光源 286
13.2 环境和材质 287
13.3 LibGDX 3D基础 287
13.3.1 创建项目 287
13.3.2 相机 290
13.3.3 Model和ModelInstance类 291
13.3.4 ModelBatch类 291
13.3.5 Environment类 291
13.4 加载模型 292
模型格式和FBX转换器 294
13.5 3D frustum culling技术 295
13.6 ray picking技术 299
13.7 总结 301
第14章 Bullet物理引擎 302
14.1 关于Bullet 302
14.2 Bullet基本概念 303
14.2.1 刚体 303
14.2.2 碰撞形状 304
14.2.3 MotionStates 304
14.2.4 物理模拟 305
14.3 LibGDX Bullet 305
14.3.1 创建项目 305
14.3.2 创建基础3D场景 306
14.3.3 初始化Bullet 310
14.3.4 创建动态世界 310
14.3.5 自定义MotionState类 311
14.3.6 ContactListener类 312
14.4 添加刚体 312
14.5 步进世界 313
14.5.1 Bullet光线投射技术 314
14.5.2 测试游戏 314
14.6 添加阴影 325
14.7 总结 327
索引 329