新書推薦:
《
拯救免疫失衡
》
售價:NT$
254.0
《
收尸人
》
售價:NT$
332.0
《
大模型应用开发:RAG入门与实战
》
售價:NT$
407.0
《
不挨饿快速瘦的减脂餐
》
售價:NT$
305.0
《
形而上学与存在论之间:费希特知识学研究(守望者)(德国古典哲学研究译丛)
》
售價:NT$
504.0
《
卫宫家今天的饭9 附画集特装版(含漫画1本+画集1本+卫宫士郎购物清单2张+特制相卡1张)
》
售價:NT$
602.0
《
化妆品学原理
》
售價:NT$
254.0
《
万千教育学前·与幼儿一起解决问题:捕捉幼儿园一日生活中的教育契机
》
售價:NT$
214.0
編輯推薦:
虽然许多书籍都专注于使用Unity创作3D游戏,但独立开发者*容易成长的市场是2D游戏。如果你意识到自己是为游戏而生,并想要开发和制作游戏,那你一定会受到本书中真实的、独立的游戏实例的启发。书中实例使用Unity持续更新的2D工作流程中的*工具,讲解在Unity中开发2D游戏的基本概念。
我们正处于独立游戏的黄金时代,现在正是构建你一直梦想的游戏的更佳时机。《Unity 2D 游戏开发》可以为你指明方向。
內容簡介:
《Unity?2D游戏开发》既是C#Unity引擎的业界标准语言语言的真实演练,也是包含脚本编写、玩家输入管理、资源使用、动画、碰撞检测和状态管理的重要的Unity核心课程。除基础知识外,你还将学习*编程实践,有用的游戏架构模式设计,以及如何自定义Unity使其符合自己的需要。所有内容旨在构建运行良好的2D游戏。 通过专注于2D游戏和Unity不断扩展的2D工作流程,本书深入探讨了一些非常有用的2D主题,如精灵图集、瓦片切割以及全新的Tilemap瓦片地图功能。全新的分发渠道,如App?Store、Google?Play、itch.io、Steam以及GOG.com,让发现、购买和销售游戏比以往任何时候都容易。
關於作者:
Jared Halpern是一名拥有计算机科学背景和超过12年各种技术工作经验的软件开发人员。最近他专注于Apple和Unity。多年来,Jared已经开发了许多iPhone应用程序,包括游戏、增强现实AR、摄影、电子商务、视频和GIF应用程序。他的兴趣包括Swift、Unity、AR、游戏开发,以及使用这些技术开发的创造性应用程序。他对游戏开发充满热情,希望将游戏作为一种交互媒介用于讲故事,以及提供其他媒介无法提供的体验。他目前喜欢做一名自由软件开发人员。
目錄 :
第1章 游戏与游戏引擎 1
1.1 游戏引擎它们是什么 1
1.1.1 建造房子的第一种方法 2
1.1.2 建造房子的第二种方法 3
1.1.3 关于第一种方法 3
1.1.4 关于第二种方法 3
1.1.5 结论 4
1.2 历史上的游戏引擎 4
1.3 今天的游戏引擎 5
1.4 Unity游戏引擎 6
1.5 本章小结 7
第2章 Unity简介 9
2.1 安装Unity 9
2.2 Unity配置 10
2.3 脚本编辑器:Visual Studio 12
2.4 浏览Unity界面 12
2.5 了解不同的视图 13
2.6 配置和自定义布局 15
2.7 Transform Toolset 15
2.8 Handle Position Controls 16
2.9 Play、Pause和 Step控制按钮 17
2.10 Unity项目结构 18
2.11 Unity文档 19
2.12 本章小结 19
第3章 Unity基础 21
3.1 Game Object:容器实体 21
3.2 Entity-Component Design 22
3.3 Components: Building Blocks 23
3.4 精灵 24
3.5 动画 30
3.6 碰撞器Collider 35
3.7 Rigidbody刚体组件 36
3.8 标签和层 37
3.8.1 标签Tag 37
3.8.2 层Layer 38
3.8.3 Sorting Layer排序层 39
3.9 预制件Prefab介绍 41
3.10 脚本:组件逻辑 43
3.11 状态和动画 50
3.11.1 多状态机 50
3.11.2 动画参数 52
3.12 本章小结 60
第4章 构建游戏世界 61
4.1 Tilemap和Tile Palette 61
4.2 创建Tile Palette 62
4.3 用Tile Palette绘制地图 64
4.4 使用多个Tilemap 66
4.5 图形设置 69
4.6 摄像机 70
4.7 使用Cinemachine 73
4.8 虚拟摄像机 75
4.9 稳定性 82
4.10 材质 85
4.11 碰撞器和Tilemap 86
4.11.1 Tilemap Collider 2D 86
4.11.2 复合碰撞器 88
4.11.3 编辑Physics Shape 90
4.12 本章小结 93
第5章 整合游戏 95
5.1 Character类 95
5.2 Player类 96
5.3 聚焦预制件 97
5.3.1 创建硬币预制件 98
5.3.2 设置Circle Collider 2D 98
5.3.3 设置自定义标签 99
5.4 基于层的碰撞检测 100
5.5 触发器和脚本 102
5.6 Scriptable Object脚本化对象 103
5.6.1 创建一个Scriptable Object 104
5.6.2 构建Consumable脚本 107
5.6.3 组装我们的道具 108
5.6.4 玩家碰撞 109
5.6.5 创建用于增加生命值的道具Heart Power-Up 111
5.7 本章小结 116
第6章 生命条与背包 117
6.1 创建生命条 117
6.1.1 Canvas对象 117
6.1.2 UI元素 117
6.1.3 构建生命条 118
6.1.4 锚点 120
6.1.5 调整锚点 121
6.1.6 用户界面图像遮罩UI Image Mask 123
6.1.7 导入自定义字体 126
6.1.8 添加生命值文本 126
6.1.9 编写HealthBar.cs脚本 128
6.1.10 Scriptable Object:HitPoints 128
6.1.11 更新Character.cs脚本 129
6.1.12 更新Player.cs脚本 129
6.1.13 创建HealthBar.cs脚本 133
6.1.14 配置Health Bar组件 135
6.2 背包 138
6.2.1 导入背包格子图像 140
6.2.2 配置背包格子 141
6.2.3 创建Inventory.cs脚本 147
6.3 本章小结 157
第7章 角色、协程和生成点 159
7.1 创建Game Manager 159
7.2 单例Singleton 159
7.2.1 创建单例 160
7.2.2 创建RPGGameManager预制件 162
7.3 Spawn Point生成点 162
7.3.1 构建SpawnPoint预制件 165
7.3.2 配置Player Spawn Point 167
7.3.3 生成玩家 168
7.3.4 小结 169
7.3.5 敌人Spawn Point 169
7.4 Camera Manager摄像机管理器 170
7.4.1 使用Camera Manager 172
7.4.2 设计Character类 174
7.4.3 virtual关键字 174
7.5 Enemy类 175
7.5.1 重构 175
7.5.2 internal内部访问修饰符 176
7.6 协程Coroutine 177
7.6.1 调用协程 177
7.6.2 暂停或让步执行 177
7.6.3 一个完整的协程 177
7.6.4 具有时间间隔的协程 178
7.6.5 abstract关键字 178
7.6.6 实现Enemy类 179
7.6.7 DamageCharacter方法 180
7.6.8 ResetCharacter 182
7.6.9 在OnEnable中调用ResetCharacter 182
7.6.10 KillCharacter 182
7.7 更新Player类 183
7.7.1 重构预制件的实例化 184
7.7.2 回顾 185
7.7.3 使用已经构建的功能 185
7.7.4 OnCollisionEnter2D方法 186
7.7.5 OnCollisionExit2D方法 187
7.7.6 配置Enemy.cs脚本 188
7.8 本章小结 188
第8章 人工智能和弹弓武器 189
8.1 漫游算法 189
8.1.1 入门 190
8.1.2 创建漫游脚本 191
8.1.3 漫游变量 191
8.1.4 构建Start方法 193
8.1.5 漫游协程 194
8.2 选择一个新的端点 196
8.2.1 角度变弧度,再变向量 197
8.2.2 敌人行走动画 197
8.2.3 Move协程 200
8.2.4 配置漫游脚本 203
8.2.5 OnTriggerEnter2D方法 203
8.2.6 OnTriggerExit2D方法 205
8.2.7 Gizmo 206
8.3 自我防卫Self-Defense 209
8.4 Ammo类 210
8.4.1 导入资源 210
8.4.2 添加组件,设置图层 210
8.4.3 更新图层碰撞矩阵 211
8.4.4 构建Ammo.cs脚本 211
8.4.5 在我们忘记之前制作AmmoObject预制件 213
8.5 对象池Object Pooling 213
8.6 创建Weapon类 214
8.6.1 Stubbing-Out方法 216
8.6.2 SpawnAmmo方法 218
8.6.3 Arc类和线性插值 220
8.6.4 屏幕点和世界点 222
8.6.5 FireAmmo方法 223
8.6.7 配置Weapon.cs脚本 225
8.6.8 沿弧线运动 225
8.7 添加弹弓动画 227
8.8 混合树 228
8.8.1 清理动画器 228
8.8.2 构建行走混合树 229
8.8.3 层和多层嵌套 231
8.8.4 关于混合类型Blend Type 231
8.8.5 Animation Parameter动画参数 232
8.8.6 使用参数 232
8.8.7 好了,但为什么呢 234
8.8.8 循环时间 235
8.8.9 创建转换 236
8.9 更新运动控制器 236
8.9.1 导入战斗精灵 237
8.9.2 创建动画剪辑 238
8.9.3 构建战斗混合树 239
8.9.4 Exit Time退出时间 240
8.9.5 更新Weapon类 240
8.9.6 添加变量 241
8.9.7 Start方法 242
8.9.8 更新Update方法 243
8.9.9 确定方向 243
8.9.10 斜率方法 245
8.9.11 计算斜率 246
8.9.12 比较y轴截距 247
8.9.13 HigherThanNegative-SlopeLine方法 248
8.9.14 GetQuadrant方法 248
8.9.15 UpdateState方法 250
8.10 受到伤害时闪烁 252
8.11 在其他平台上运行游戏 254
8.12 退出游戏 255
8.13 本章小结 256
8.14 未来方向 256
8.14.1 社区 256
8.14.2 了解更多信息 257
8.14.3 去哪里寻求帮助 257
8.14.4 Game Jams 257
8.14.5 新闻和文章 258
8.14.6 游戏和资源 258
8.15 超越 258
內容試閱 :
我的视频游戏历史是从公共图书馆开始的,当时我发现了一系列类似于讲解如何用BASIC编写自己的电脑游戏的书籍。通过将书中的代码复制到编辑器中,我能够制作基本的冒险游戏。在大学里,我使用C和Direct-X制作了一个带有星际迷航主题的宝石迷阵复制品。作为一名iOS开发人员,我最终使用Apple的SceneKit和SpriteKit框架开发了一款虚拟宠物游戏。当我发现Unity游戏引擎时,我一直试图做的一切都集中在一起了。Unity允许我拖放精灵表spritesheet,单击按钮,然后继续开发,而不是花半周时间编写解析和切片精灵的代码。我终于可以专注于制作游戏,而不是花大部分时间编写代码。
没有Unity或任何游戏引擎,也有可能创造出伟大的视频游戏,但那样的话需要花费很长的时间。你将花费时间和精力去解决那些本不需要解决的问题。一款游戏可能需要几年时间才能完成开发,而在开发游戏的这几年里,生活也在继续,所以实际上很可能,你永远完不成这个游戏。从经验上讲,在使用Unity之前,我很少完成任何一个由我启动的游戏项目。
Teddy Roosevelt曾在他的自传中引用过一句话:在你所处的位置,用你所有的资源,做你力所能及的事。我赞同这种观点,也相信单靠努力并不总能帮助你实现目标。人生的成功往往与杠杆作用有关:无论你身在何处,利用你拥有的任何资源,以获得最大的影响力。充分利用时间的诀窍是找到乘数:那些能让你产生原本就能产生杠杆效应的东西。Unity就是这样一种乘数。Unity允许你利用任何时间晚上、周末、30分钟的午休时间,并最大限度地利用这段时间制作游戏。通过使用Unity来充分利用时间,你更有可能真正完成游戏。
当我开始写作《Unity 2D 游戏开发》时,我想写一本我第一次学习Unity时就想阅读的书。希望我能成功。在《Unity 2D 游戏开发》接下来的内容中,你将学习在Unity中创建自己的视频游戏所需的基本技能,并且你可能在未来的游戏历史中留下自己的印记。让我们开始吧!