您好,欢迎光临有路网!
Unity 3.X 游戏开发经典教程
QQ咨询:
有路璐璐:

Unity 3.X 游戏开发经典教程

  • 作者:(英)Will Goklstone 张检阅
  • 出版社:科学出版社
  • ISBN:9787030368270
  • 出版日期:2012年05月01日
  • 页数:388
  • 定价:¥68.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    本书通过从零开始创建一个完整的Unity游戏项目,在对游戏进行一步步创建、完善的过程中向读者详细介绍了如何利用地形系统刷出简易的游戏环境、编写脚本控制对象的行为、利用图形用户界面(GUI)系统制作UI、使用物理系统模拟物理作用、添加粒子系统创建**、运用动画系统实现简单的动画,以及发布到不同平台时相关的发布设置。
    <br>书中所有脚本都有JavaScript和C#两个版本,读者可根据需要选择阅读适合自己的一种。另外,书中对于每个工具的使用方法、操作小技巧都有介绍,对每个组件中各个参数的作用都有分析,还拓展了一些游戏开发方面的知识。
    <br>本书非常适合初学者较系统地学习、熟悉、使用Unity,适合高等院校及相关培训机构选作游戏开发教材。
    文章节选
    第 1 章
    <br>进入三维世界
    <br>在你开始研究任何的三维软件之前,理解你将面对的开发环境是十分必要的。Unity 是一个以3D 为主的开发��具,本书中的很多概念都需要读者对3D 游戏开发和游戏引擎有一定程度的了解。在你潜心钻研本书的其他内容之前,理解这些概念是十分必要的。因此,在这一章,我们将在向你介绍Unity 操作界面的知识之前,让你对这些重要的3D 概念有良好的认识。在本章中,你将学到:
    <br>◆ 坐标系和向量;
    <br>
    <br>◆ 三维图形;
    <br>
    <br>◆ 材质和纹理;
    <br>
    <br>◆ 动态刚体;
    <br>
    <br>◆ 碰撞检测;
    <br>
    <br>◆ 游戏物体和组件;
    <br>
    <br>◆ 资源和场景;
    <br>
    <br>◆ 预制;
    <br>
    <br>◆Unity 编译器的界面。
    <br>
    <br>
    <br>1.1.了解三维世界
    <br>首先,让我们来看一看三维世界中的关键元素,以及怎么使用Unity 来开发3D 游戏。
    <br>坐标系
    <br>如果你之前接触过其他的3D 软件,你将对z轴的概念感到熟悉。z轴表示的是深度,与之类似的有x轴表示水平方向,y轴表示垂直方向。在3D 软件中,你会注意到物体的坐标信息以x,y,z的格式罗列出来――这个方法也就是众所周知的笛卡儿坐
    <br>第1章.进入三维世界
    <br>标系方法。我们可以用这个方法来描述三维世界中笛卡儿坐标系的维度、旋转的数值和位置。在本书及其他3D 软件的帮助文档中,你会发现这些信息放在一对括号中,如(3,5,3)。
    <br>这么书写主要是为了使代码整齐,实际上,在程序中这些值一定要这样书写。不管它代表的是什么意思。可以确定的是,它们都以x,y,z的顺序排列,并且相互之间使用逗号隔开。
    <br>在图1.1 中,一个立方体出现在世界坐标系(3,5,3)的位置,这意味着,它距离原点位置在x轴方向有3个单位的长度,y轴方向有5个单位的长度,z轴方向有3个单位的长度。
    <br>
    <br>图1.1
    <br>本地坐标系和世界坐标系
    <br>本地坐标系和世界坐标系是十分重要的概念。在所有的3D 软件中,你将接触的是理论上无限的空间,有时候在这样广大的空间中,得知一个物体的位置是十分困难的一件事情。在任何3D 世界中,都有一个起点,也可称为世界原点,就像代表它的位置(0,0,0)一样。
    <br>所有世界坐标系中的坐标都与这一点有着密切关联。当然,为了在某些情况下方便使用,我们也声明了本地坐标系来表示物体间的相对位置。这样的物体间的关系也
    <br>1.1.了解三维世界
    <br>被称为父子级关系。在Unity 中,你可以简单地通过在层次面板中把一个物体拖到另一个物体上面,以此来建立父子级关系。这样做的结果是使得被拖动的物体成为目标物体的子级,并且使得被拖动物体的坐标系与目标物体坐标系相关联。假设有一个子级物体与父级物体在世界坐标系中处于同一位置,那么我们可以说子级物体在本地坐标系(相对于父级物体而言)中处于(0,0,0)的位置,即使父级物体在世界坐标系中并不是处在(0,0,0)的位置。
    <br>本地坐标系假设每个物体都有自己的起点,也就是它所有轴交汇的那一点。通常来说,这一点是物体的**点。此外,通过在物体间建立关系,我们可以比较物体间的相对位置。这样的关系,我们称之为父子级关系。这意味着,我们可以把父级物体的坐标位置当做新的原点,从而可以使用本地坐标系来计算子级物体之间的距离。
    <br>在使用3D 模型软件时,这一点尤为重要,你要确保你所创建的模型是放在(0,0,0)的位置。这样做是为了确保当你导入Unity 的时候,坐标系的表现方式是正确的。
    <br>因为以上概念在2D 和3D 中同样适用,我们将在图1.2 中展示本地坐标系和世界坐标系的概念。
    <br>图1.2(a)中显示了世界坐标系中的2个不同物体:一个位于(3,3)的较大正方形,另一个位于(6,7)的较小正方形。
    <br>图1.2(b)中,我们假设小正方形是大正方形的子级,因此,小正方形的坐标位置变成了(3,4),这是因为新的原点(0,0)是父级坐标的位置。
    <br>
    <br>图1.2
    <br>第1章.进入三维世界
    <br>向.量
    <br>接下来,我们将探讨坐标系中的三维向量。与二维向量类似,三维向量在三维世界中也有长度和方向。向量可以在坐标系中任意移动,但是本身的长度和方向不会发生变化。向量可以用来计算物体间的距离、物体间的角度、物体所面对的方向,因此,向量在游戏开发中十分有用。
    <br>相.机
    <br>相机是三维世界中必不可少的组成部分,因为它充当着视口的角色。
    <br>相机可以放在坐标系中的任意位置,你也可以为它添加动画,或者根据需要把它附加在一个物体上。在一些特定的场景中,Unity 允许多个相机的存在,但是只有一个相机可以渲染出玩家看到的画面。这也是你每创建一个新的场景时,Unity 总会自带一个主相机的原因。
    <br>投影器的模式――二维和三维对比
    <br>相机的投影器在渲染2D (正交相机)和3D (透视相机)时存在区别。在一般的情况下,相机被设置为透视模式的时候,相机拥有金字塔状的视野(Field of View,FOV )。为了在Unity 中渲染3D 环境,我们通常把相机的投影器模式设置为透视模式。与之相反,为了渲染2D 环境,我们将相机的投影器模式设置为正交模式,因为正交模式的视野是长方形的。我们可以把此方法应用在主相机上来创建2D 游戏,或者应用在其他副相机上来渲染地图、血条等其他平视显示器(HUD )。
    <br>在游戏引擎中,你会注意到为了使得玩家看到的游戏世界更加生动、真实,我们可以添加多种**,如灯光、运动模糊等效果。你也可以添加一些人眼在日常生活中无法感知的**,比如当你看太阳时的光晕效果,我们称之为镜头光晕。
    <br>目前,大多数3D 游戏使用多个相机渲染玩家视野外的游戏世界。在Unity 中实现这个方法是十分简单的,Unity 允许多个相机存在于同一个场景中,并且,***可以通过脚本在游戏的运行过程中,在任何的时间点切换主相机。为了达到优化的目的,多个相机还可以用来有选择性地渲染游戏场景中的物体。比如,我们可以使用层对场景中的物体进行分类,然后设置相机,使得相机只渲染出特定层的物体。这样,我们可以有选择性地渲染游戏场景中的物体。
    <br>1.1.了解三维世界
    <br>多边形、边、顶点和网格
    <br>在创建3D 模型时,所有的物体都是由相连的多边形构成的,当我们把3D 模型导入Unity 的时候,Unity 自动把多边形转化成三角形。通过连接多个多边形,我们可以使用3D 模型制作软件创造出复杂的形状,这也被称为网格。三角形面(也被称为面)由三条相连的边组成。我们称边与边交汇的地方为顶点(图1.3 )。
    <br>
    <br>图1.3
    <br>通过知道这些点的位置,游戏引擎可以使用这些点来做碰撞运算,为了得到更**的碰撞检测结果,你也可以使用网格碰撞器。比如在射击游戏中,你需要知道子弹打在物体上的准确位置,就可以用网格碰撞器。网格上所保存的数据还有诸多其他用途。比如,你可以使用一个形状大致与原物体一样,但是精细度却低得多的网格来做碰撞。这样做可以使电脑减少大量的计算,从而提升游戏的性能。如图1.4 所示,包裹在车子外围的网格只是呈现出车子的大概形状。
    <br>在图1.5 中可以看到,用来做碰撞检测的网格的细节程度远低于可视网格的细节程度。
    <br>在游戏项目中,知道游戏中目前的多边形总数是十分关键的。多边形总数指的是游戏中包括摆设、模型,整个关卡(或者以Unity 来说,场景)中的多边形总数越多,计算机就需要进行越多的计算,这样就需要花更多的时间渲染场景。这也是为什么当今的游戏在画面的精细程度上远远超过之前的游戏。让我们来比较一下Quake(1996)和Epic 公司的战争机器(Gears of War,2006 )在画面上的区别,很显然伴随着科技的发展,游戏***能够使用更多数量的多边形去创建精细度更高、更加真实的模型,
    <br>第1章.进入三维世界
    <br>
    <br>可视网格细节
    <br>图1.4
    <br>
    <br>碰撞网格细节
    <br>图1.5
    <br>这也是目前游戏的发展趋势。换一句话说,伴随着Unity 游戏引擎的诞生,我们所做的游戏能发布到更多的平台(网页、手机)上,而不单单是在家用主机上。然而,硬件方面的限制还是一如既往的开发瓶颈,如手机上的3D 游戏细节的精细程度就受到硬件本身的限制。正是因为如此,当你在创建3D 模型时,要时常根据自己游戏的需要把握好游戏画面的细节程度。
    <br>
    目录
    第1章 进入三维世界<br>1.1 了解三维世界<br>坐标系<br>本地坐标系和世界坐标系<br>向量<br>相机<br>多边形、边、顶点和网格<br>材质、纹理、着色器<br>1.2 刚体物理<br>碰撞检测<br>1.3 Unity的几个关键概念<br>Unity应用举例<br>资源<br>场景<br>游戏对象<br>组件<br>脚本<br>预制<br>1.4 界面<br>场景视图和网格层次面板<br>检视面板<br>工程面板<br>游戏视图<br>1.5 小结<br>第2章 游戏雏形和脚本基础<br>2.1 你的**个Unity工程<br>2.2 简单的环境雏形<br>设置场景<br>添加简单的光源<br>制作砖块物体<br>建立一堵墙,然后破坏它<br>2.3 脚本入门<br>一个新的行为脚本或“类”<br>一个新建的C#脚本中有什么?<br>一个新建的JavaScript脚本中有什么?<br>摧毁那堵墙<br>声明公有变量<br>2.4 理解Translate函数<br>完善Translate函数<br>2.5 测试游戏<br>创建一个射弹<br>2.6 使用预制存储信息<br>发射射弹<br>2.7 用Instantiate()函数生成物体<br>为刚体添加力<br>2.8 小结<br>第3章 创建环境<br>3.1 游戏构思<br>3.2 使用地形工具<br>地形工具的特点<br>地形工具的功能<br>创建一个小岛——太阳、海和海滩<br>3.3 小结<br>第4章 角色控制器和脚本进阶<br>4.1 使用检视面板<br>标签<br>层<br>预制和检视面板<br>4.2 解剖角色控制器<br>4.3 分解**人称控制器<br>父子级关系<br>First Person Controller物体<br>4.4 脚本进阶<br>命令<br>变量<br>4.5 完整的例子<br>函数<br>编写自己的函数<br>声明自定义函数<br>if else条件语句<br>多重条件<br>4.6 脚本的内部交流和点语法<br>访问其他物体<br>Find()和FindWithTag()命令<br>SendMessage()命令<br>GetComponent()命令<br>注释<br>4.7 角色移动脚本<br>分解脚本<br>声明变量<br>4.8 小结<br>第5章 交互<br>5.1 外部建模软件<br>模型的常规设置<br>网格<br>材质<br>动画<br>动画压缩<br>5.2 设置岗哨模型<br>5.3 添加岗哨模型<br>位置<br>旋转<br>添加碰撞器<br>添加刚体<br>添加音频<br>关闭动画的自动播放<br>5.4 碰撞和触发器<br>5.5 光线投射<br>5.6 打开岗哨模型<br>方法1——碰撞检测<br>方法2——光线投射<br>方法3——触发器碰撞检测<br>5.7 小结<br>第6章 收集、物品栏和HUD<br>6.1 制作能量源预制<br>下载、导入和放置<br>为能量源添加标签<br>碰撞器的大小和旋转<br>添加刚体<br>创建能量源脚本<br>添加触发器碰撞检测<br>保存为预制<br>6.2 放置能量源<br>6.3 编写玩家Inventory脚本<br>保存充电状态<br>添加CellPickup()函数<br>6.4 限制岗哨的进入<br>用能量源的计数器限制进门<br>6.5 显示能量源HUD<br>GUI纹理的导入设置<br>创建GUITexture物体<br>放置PowerGUI纹理<br>编写脚本转换纹理<br>理解数组<br>解锁门<br>6.6 为玩家提供提示<br>使用GUIText在屏幕上显示信息<br>6.7 小结<br>第7章 实例化和刚体<br>7.1 使用Instantiation()命令<br>7.2 刚体<br>力<br>刚体组件<br>7.3 创建迷你游戏<br>创建椰子预制<br>创建Launcher物体<br>使用脚本发射椰子<br>*后的检查<br>限制实例数量,移除物体<br>添加小屋<br>赢得胜利<br>打磨游戏<br>7.4 小结<br>第8章 粒子系统<br>8.1 什么是粒子系统?<br>粒子发射器<br>粒子动画器<br>粒子渲染器<br>8.2 制作任务<br>需要的资源<br>添加木条<br>创建篝火粒子系统<br>点燃篝火<br>8.3 测试游戏<br>究竟还有什么问题呢?<br>8.4 小结<br>第9章 制作菜单<br>9.1 界面和菜单<br>创建场景<br>9.2 使用GUITexture和鼠标事件创建菜单<br>添加Play按钮<br>GUITexture按钮的脚本<br>加载场景<br>为公有变量赋值<br>测试按钮<br>添加向导按钮<br>添加退出按钮<br>使用Debug命令检测脚本<br>9.3 使用Unity GUI类和GUI皮肤制作菜单<br>关闭游戏物体<br>创建菜单<br>9.4 小结<br>第10章 动画基础<br>10.1 庆祝信息<br>制作庆祝信息的步骤<br>触发胜利<br>创建庆祝信息文本<br>使用线性插值(Lerp)<br>创建win物体<br>创建Fader物体并使用动画面板<br>载入庆祝信息<br>放置GUITexture<br>挑战——小岛场景的淡入淡出<br>10.2 小结<br>第11章 游戏完善和*后的调整<br>11.1 调整地形和玩家的初始位置<br>调整地形<br>创建道路<br>11.2 设置玩家的初始位置<br>11.3 优化游戏性能<br>相机剪裁面和雾<br>光照贴图<br>光源和烘焙<br>烘焙光照贴图<br>11.4 *后的调整<br>火山<br>椰子的拖痕<br>11.5 小结<br>第12章 发布与分享<br>12.1 发布选项<br>网络播放器版<br>PC或Mac单机版<br>OSX Dashboard Widget<br>12.2 发布设置<br>12.3 播放器设置<br>跨平台设置<br>各平台设置<br>12.4 质量设置<br>12.5 玩家输入设置<br>12.6 发布游戏<br>发布网络播放器版<br>**次发布<br>发布网络播放器版可执行文件<br>12.7 分享你的作品<br>分享到Kongregate.com<br>12.8 小结<br>第13章 测试和进一步学习<br>13.1 在实践中学习<br>13.2 测试并完成游戏<br>公测<br>13.3 学习方法<br>覆盖尽可能多的基础内容<br>利用现有资源<br>遇到问题尽管问!<br>13.4 小结<br>

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外