编辑推荐
Unity目前是全世界优秀的游戏渲染引擎平台,其中程序开发也有自己的一套规则和技巧。本书基于此,使用Unity C#编程模块,实现18款经典小游戏的算法。不论是游戏开发爱好者,还是专业人士,都能从本书学习到:(1)Unity程序脚本入口及与场景模块相关联的编程操作流程与算法分析。(2)C#的程序编写技巧。(3)学习整个游戏开发的综合流程与策划思路,以便将来更好的融入相关团队。
内容介绍
在游戏开发学习中,借鉴经典游戏的开发思路和算法是快速提升开发与设计水平的有效捷径,这种学习的路径也是明智而高效的。本书精选了18个广受欢迎的经典游戏案例进行讲解剖析,包含打地鼠、俄罗斯方块、打砖块、三消、翻牌子、连连看、拼图、推箱子、炸弹人、华容道、横板跑酷、扫雷、贪吃蛇、五子棋、跳棋、吃豆人、斗地主、坦克大战等游戏。本书游戏的实现采用了Unity 2017版软件,该软件是目前世界范围内使用*广泛的游戏开发与虚拟现实开发平台之一,界面友好,功能强大,有适合不同学习阶段和不同开发需求的对应版本。 本书不仅详细介绍了Unity的软件操作基础与游戏开发操作流程,而且对每个游戏案例的开发思路、算法分析、程序实现等都有详尽的讲解,非常适合对游戏开发、虚拟现实开发设计感兴趣的初中级读者,也适合游戏相关专业作为教材使用。
作者介绍
张帆,具有多年游戏开发和教学经验,浙江传媒学院教师,研究方向包括:数字娱乐与交互设计、游戏设计,已出版教材:《Unity5.X游戏开发基础》、《 游戏策划与设计》等。
目录
- 第 1章 游戏引擎介绍 1
- 1.1 多平台发布的Unity3D游戏引擎 2
- 1.2 Unity3D游戏引擎的下载和安装 2
- 1.2.1 Unity3D下载 2
- 1.2.2 Unity3D的安装 4
- 1.2.3 Unity3D的注册 5
- 1.2.4 启动Unity3D 6
- 1.3 Unity3D编辑器的布局 7
- 1.3.1 标题栏 8
- 1.3.2 主菜单栏 8
- 1.3.3 Project(项目资源)窗口 17
- 1.3.4 Hierarchy(层级窗口) 26
- 1.3.5 Scene场景窗口 28
- 1.3.6 Inspector组件参数编辑窗口 40
- 1.3.7 Game(游戏预览窗口) 46
- 1.3.8 Console(控制台) 48
- 1.4 自定义窗口布局 49
- 1.4.1 使用Unity3D内置的窗口布局功能 49
- 1.4.2 自定义窗口布局 52
- 1.5 Unity中定义的重要概念
- 1.5.1资源(Assets)
- 1.5.2工程(Project)
- 1.5.3场景(Scenes)
- 1.5.4游戏对象(GameObject)
- 1.5.5组件(Component)
- 1.5.6脚本(Scripts)
- 1.5.7预置(Prefabs)
- 第 2章 打地鼠 54
- 2.1 游戏简介 54
- 2.2 游戏规则 54
- 2.3 程序思路 54
- 2.3.1 洞口的排列 54
- 2.3.2 地鼠出现频率 55
- 2.3.3 单个地鼠设置 55
- 2.3.4 游戏时间和分数 55
- 2.3.5 游戏流程图 56
- 2.4 程序实现 57
- 2.4.1 前期准备 57
- 2.4.2 游戏制作 58
- 2.4.3 单只地鼠出现与消失 61
- 2.4.4 地鼠的随机出现和出现频率 67
- 2.4.5 时间、分数和其他 73
- 第3章 俄罗斯方块 80
- 3.1. 游戏简介 80
- 3.2. 游戏规则 80
- 3.3. 游戏实现思路 82
- 3.3.1. 随机生成方块 82
- 3.3.2. 地图的生成: 82
- 3.3.3. 判断方块是否都在边界内 82
- 3.3.4. 判断是否碰到其他的方块 83
- 3.3.5. 检查是否满行 83
- 3.3.6. 删除填满的行 83
- 3.3.7. 提示下一个方块组 83
- 3.3.8. 结束判定 84
- 3.3.9. 流程图 84
- 3.4. 游戏程序实现 85
- 3.4.1. 前期准备 85
- 3.4.2. 制作场景 87
- 3.4.3. 生成方块组与方块组下落 89
- 3.4.4. 边界判断 93
- 3.4.5. 删除一行方块 100
- 3.4.6. 结束判定 104
- 3.4.7. 细节完善 105
- 第四章 打砖块 109
- 4.1 游戏简介 109
- 4.2 游戏规则 110
- 4.3 程序思路 110
- 4.3.1 地图生成 110
- 4.3.2 砖块控制 111
- 4.3.3 小球控制 111
- 4.3.4 流程图 112
- 4.4 程序实现 113
- 4.4.1 前期准备 113
- 4.4.2 游戏制作 114
- 4.4.3 横板控制 116
- 4.4.4 小球控制 118
- 4.4.5 砖块的生成及控制 121
- 4.4.6 道具的控制 127
- 第5章 三消 110
- 5.1 游戏简介 110
- 5.2 游戏规则 110
- 5.3 程序思路 111
- 5.3.1 地图生成: 111
- 5.3.2 消除检测 112
- 5.3.3 消除算法 113
- 5.3.4 宝石掉落 113
- 5.3.5 流程图 115
- 5.4 程序实现 116
- 5.4.1 前期准备 116
- 5.4.2 游戏制作 117
- 5.4.3 地图生成 118
- 5.4.4 点选响应及宝石交换 122
- 5.4.5 宝石的消除判定及宝石的消除 127
- 第6章 翻牌子 158
- 6.1 游戏简介 158
- 6.2 游戏规则 158
- 6.3 程序思路 158
- 6.3.1 搭建卡片池 159
- 6.3.2 卡片状态 159
- 6.3.3 游戏计分 160
- 6.3.4 游戏流程图 160
- 6.4 程序实现 162
- 6.4.1 前期准备 162
- 6.4.2 游戏制作 163
- 6.4.3 卡片池的生成 164
- 6.4.4 卡片图案的随机生成 168
- 6.4.5 卡片的配对 177
- 6.4.6 步数、分数和重新开始 181
- 第7章 连连看 191
- 7.1 游戏简介 191
- 7.2 游戏规则 191
- 7.3 程序思路 193
- 7.3.1 地图生成 193
- 7.3.2 消除检测 193
- 7.3.3 画线: 195
- 7.3.4 流程图 196
- 7.4 程序实现 197
- 7.4.1 前期准备 197
- 7.4.2 游戏制作 198
- 7.4.3 地图创建 199
- 7.4.4 点选判定 203
- 7.4.5 消除判定 205
- 7.4.6 画线 213
- 7.4.7 道具实现 217
- 第8章 拼图 221
- 8.1 游戏简介 221
- 8.2 游戏规则 221
- 8.3 游戏思路 221
- 8.3.1 原图与碎片的对应关系 221
- 8.3.2 鼠标拖拽移动碎片 223
- 8.3.3 正确判断 223
- 8.3.4 获胜判断 224
- 8.3.5 流程图 224
- 8.4 游戏实现 225
- 8.4.1 前期准备 225
- 8.4.2 制作游戏场景 226
- 8.4.3 碎片生成 229
- 8.4.4 鼠标事件 230
- 8.4.5 游戏结束判断 234
- 第9章 推箱子 236
- 9.1 游戏简介 236
- 9.2 游戏规则 236
- 9.3 程序思路 237
- 9.3.1 地图生成 237
- 9.3.2 角色移动 237
- 9.3.3 箱子移动: 239
- 9.3.4 角色及箱子移动逻辑 239
- 9.3.5 游戏获胜判定 241
- 9.3.6 游戏流程图 242
- 9.4 程序实现 243
- 9.4.1 前期准备 243
- 9.4.2 游戏制作 244
- 9.4.3 地图生成 244
- 9.4.4 角色的移动 249
- 9.4.5 箱子的移动 256
- 9.4.6 游戏胜利判定 259
- 9.4.7 动画的加入 264
- 第 10章 炸弹人 268
- 10.1 游戏简介 268
- 10.2 游戏规则 269
- 10.3 程序思路 269
- 10.3.1 地图生成 269
- 10.3.2 炸弹管理 271
- 10.3.3 怪物管理 271
- 10.3.4 游戏管理 272
- 10.3.5 游戏流程图 272
- 10.4 程序实现 273
- 10.4.1 前期准备 273
- 10.4.2 地图制作 274
- 10.4.3 开始制作 275
- 10.4.4 玩家操控 285
- 10.4.5 墙体摧毁 293
- 10.4.6 怪物制作 294
- 第 11章 华容道 302
- 11.1 游戏简介 302
- 11.2 游戏规则 302
- 11.3 游戏程序实现思路 303
- 11.3.1 棋子 303
- 11.3.2 棋盘 304
- 11.3.3 移动棋子。 304
- 11.3.4 结束判定 313
- 11.3.5 流程图 314
- 11.4 游戏实现 315
- 11.4.1 前期准备 315
- 11.4.2 制作游戏场景 316
- 11.4.3 生成棋子 318
- 11.4.4 棋子移动 320
- 11.4.5 游戏结束判定 342
- 第 12章 横版跑酷 345
- 12.1 游戏简介 345
- 12.2 游戏规则 347
- 12.3 程序思路 347
- 12.3.1 地图 347
- 12.3.2 金币和道具 347
- 12.3.3 障碍物 348
- 12.3.4 玩家 348
- 12.3.5 金币分数和已经前进距离的显示 348
- 12.3.6 游戏逻辑 349
- 12.4 工程实现 350
- 12.4.1 前期准备 350
- 12.4.2 制作游戏场景 352
- 12.4.3 玩家控制 355
- 12.4.4 路段上金币、道具和障碍物的生成 364
- 12.4.5 显示前进距离和金币 368
- 第 13章 扫雷 370
- 13.1 游戏简介 370
- 13.2 游戏规则 370
- 13.2.1 扫雷的布局 370
- 13.2.2 扫雷的基本操作 370
- 13.2.3 游戏结束 372
- 13.3 程序思路 372
- 13.3.1 雷区绘制 372
- 13.3.2 左键点击 373
- 13.3.3 右键点击 374
- 13.3.4 左右双击 374
- 13.3.5 游戏结束 374
- 13.3.6 游戏流程图 375
- 13.4 程序实现 375
- 13.4.1 前期准备 375
- 13.4.2 游戏制作 376
- 13.4.3 雷区的生成 378
- 13.4.4 *随机分布 382
- 13.4.5 方块关联 391
- 13.4.6 鼠标点击 397
- 13.4.7 游戏失败 402
- 13.4.8 剩余*数,时间和笑脸管理 406
- 第 14章 贪吃蛇 417
- 14.1 游戏简介 417
- 14.2 游戏规则 418
- 14.3 程序思路 418
- 14.3.1 地图的生成 418
- 14.3.2 食物出现 418
- 14.3.3 蛇的数据结构 418
- 14.3.4 贪吃蛇移动算法 419
- 14.3.5 蛇的增长 419
- 14.3.6 判断蛇头是否撞到了自身 420
- 14.3.7 边界判断 420
- 14.3.8 流程图 420
- 14.4 游戏程序实现 422
- 14.4.1 前期准备 422
- 14.4.2 制作场景 423
- 14.4.3 生成食物 425
- 14.4.4 蛇的移动 427
- 14.4.5 蛇的长大及移动 431
- 14.4.6 累计分数 432
- 14.4.7 结束判定 434
- 第 15章 五子棋 437
- 15.1 游戏简介 437
- 15.2 游戏规则 438
- 15.3 游戏算法思路 440
- 15.3.1 棋盘的绘制 440
- 15.3.2 盘面棋子绘制 440
- 15.3.3 落子 441
- 15.3.4 获胜规则判定 441
- 15.3.5 判定黑方禁手功能 441
- 15.3.6 流程图 442
- 15.4 游戏程序实现 443
- 15.4.1 前期准备 443
- 15.4.2 创建场景 445
- 15.4.3 落子 449
- 15.4.4 切换落子权限 454
- 15.4.5 更新棋盘状态 456
- 15.4.6 获胜判断 457
- 15.4.7 禁手规则 468
- 15.4.8 重新开始 477
- 第 16章 跳棋 482
- 16.1 游戏简介 482
- 16.2 游戏规则 482
- 16.3 程序思路 482
- 16.3.1 棋盘排列 482
- 16.3.2 棋子生成 484
- 16.3.3 棋子的位置和移动 484
- 16.3.4 计算可移动位置 485
- 16.3.5 回合限制 485
- 16.3.6 游戏胜负判断 486
- 16.3.7 游戏流程图 486
- 16.4 程序实现 487
- 16.4.1 前期准备 487
- 16.4.2 创建棋盘 488
- 16.4.3 创建棋子 493
- 16.4.4 移动棋子 495
- 16.4.5 限制可移动位置 498
- 16.4.6 回合限制 505
- 16.4.7 胜利判断 508
- 第 17章 吃豆人 511
- 17.1 游戏简介 511
- 17.2 游戏规则 511
- 17.3 程序思路 513
- 17.3.1 地图生成 513
- 17.3.2 幽灵状态 513
- 17.3.3 小精灵管理 515
- 17.3.4 游戏流程图 515
- 17.4 程序实现 517
- 17.4.1 前期准备 517
- 17.4.2 游戏制作 517
- 17.4.3 吃豆人的移动 519
- 17.4.4 豆子的消失 524
- 17.4.5 幽灵运动 527
- 第 18章 斗地主 544
- 18.1 游戏简介 544
- 18.2 游戏规则 546
- 18.3 程序思路 546
- 18.3.1 扑克牌 546
- 18.3.2 洗牌 547
- 18.3.3 发牌 547
- 18.3.4 出牌 548
- 18.3.5 牌型 550
- 18.3.6 大小 550
- 18.3.7 玩家 550
- 18.3.8 胜利 550
- 18.3.9 游戏逻辑 551
- 18.4 工程实现 551
- 18.4.1 前期准备 551
- 18.4.2 制作游戏场景 553
- 18.4.3 定义一张牌 556
- 18.4.4 洗牌 562
- 18.4.5 发牌 563
- 18.4.6 胜利判定 570
- 18.4.7 叫地主 571
- 18.4.8 出牌 582
- 18.4.9 判断牌型 584
- 18.4.10 比大小 589
- 18.4.11 胜利 596
- 第 19章 坦克大战 598
- 19.1 游戏简介 598
- 19.2 游戏规则 599
- 19.3 程序思路 599
- 19.3.1 地图生成 599
- 19.3.2 敌人 599
- 19.3.3 玩家 601
- 19.3.4 障碍物 601
- 19.3.5 道具 601
- 19.3.6 基地 602
- 19.3.7 游戏逻辑 602
- 19.4 工程实现 603
- 19.4.1 前期准备 603
- 19.4.2 制作游戏场景 607
- 19.4.3 玩家控制 611
- 19.4.4 子弹 618
- 19.4.5 地图上各类障碍物以及基地 620
- 19.4.6 敌人 629
- 19.4.7 敌人生成器 641
- 19.4.8 道具 646