unity3d教你如何搭建场景(16页).doc

上传人:1595****071 文档编号:36360885 上传时间:2022-08-26 格式:DOC 页数:17 大小:188.50KB
返回 下载 相关 举报
unity3d教你如何搭建场景(16页).doc_第1页
第1页 / 共17页
unity3d教你如何搭建场景(16页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《unity3d教你如何搭建场景(16页).doc》由会员分享,可在线阅读,更多相关《unity3d教你如何搭建场景(16页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-unity3d教你如何搭建场景-第 17 页Unity3D如何搭建场景搭建本教程将解释用于创建游戏场景的元素及方法。 1. 游戏物体(GameObject) 在 Unity中昀重要的就是游戏物体。理解什么是游戏物体如何使用它是非常重要的。该部分就将解释这个概念。什么是游戏物体?在你的游戏中的任何东西都是游戏物体。然而,游戏物体自身并不能做所有的事情。在它们成为角色,环境或者特定的效果之前它们需要特定的属性。但是物体中的每一个都会做许多不同的事情。如果每一个物体都是一个游戏物体,我们怎么从一个静态房间中区分一个具有强大交互能力的物体?是什么使得游戏物体相互不同呢?答案就是游戏物体是一个容器。他

2、们是一个空的可以容纳不同块的盒子,而这些块组成了一个带有光照贴图的岛或是一个物理驱动的汽车。为了真正理解游戏物体,你需要理解这些块;这些块被称为组件(Components)。根据你要创建的物体的不同,你可以添加不同组件到一个游戏物体中。将游戏物体想象为一个空的烹调罐,组件为不同的组成游戏的配料。游戏物体与组件的关系现在我们知道游戏物体包含组件。我们将通过使用昀常用的组件变换组件(Transform)来讨论这两者之间的关系。打开任意一个场景,创建一个新的游戏物体(使用 Shift-Command-N),选择他并查看检视面板(Instpector)空物体的检视面板你可能注意到了这里有两个完全不同的

3、部分。”GameObject”和”Transform”。属于游戏物体部分的是关于游戏物体自身的信息。这里只有物体的名称。变换部分显示变换组件的信息。当你创建一个新的物体时,将会自动包含一个变换组件。所有的物体都会有一个变换组件。在 Unity中你不可能创建一个没有变换组件的物体,变换组件为所有物体提供了独特的功能。变换组件变换组件是昀重要的组件之一。它定义了游戏物体在场景视图中的位置,旋转,和缩放。如果游戏物体没有旋转组件,那么它将不会存在世界中。参考变换组件部分。变换组件也可以使用一个被称为父子化(Parenting)的功能,这个功能被编辑器(Unity Editor)利用并且是使用游戏物体

4、昀关键的部分。父子化父子化的意思是你可以使一个游戏物体的变换值完全依赖于另一个不同游戏物体。简单来说,就是一个物体随着另一个物体移动。当一物体是另外一些物体的父(Parent)物体时,这个物体的旋转将影响所有的子(Child)物体。你可以在层次视图 (Hierarchy View)中通过拖动任何物体到另一个物体上来创建一个父。这将在两个物体之间创建父子关系。这种功能非常类似于文件夹树的功能,一个游戏物体包含在另一个游戏物体中。需要指出的是所有子物体的变换值都是相对于父物体的,这个被称为局部坐标(Local Coordinates)。通过脚本你可以访问全局坐标(Global Coordinate

5、s)和局部坐标。一个游戏物体可以有任意多个子物体,但是只能有一个父物体。子物体也可以是其它物体的父物体。你可以很容易的在层次视图中分辨一个物体是不是一个父物体。如果在它名称的左边有一个箭头,那么它就是一个父物体。一个真实的父子层次树,所有带有箭头的物体都是父物体记住所有的父子化的功能都是通过游戏物体的变换组件执行的,而不是游戏物体自身。游戏物体-脚本关系当你创建一个脚本(script)并将其附加到一个游戏物体上时,这个脚本将在检视面板中作为一个组件显示。这是因为当它们被保存时脚本就变成一个组件。从技术角度来说,脚本是作为组件的一种来编译的,就像其它组件一样。任何在脚本中申明的公有变量都将在游戏

6、物体的检视面板中显示为可编辑或可连接。编写脚本的时候,你能够直接访问任何游戏物体类的成员。你可以在这里看到一个游戏物体类的成员列表。如果任何一个类作为一个组件附加在一个游戏物体上,你就可以在脚本中使用成员名来直接访问这个组件。例如键入 transform等同于 gameObject.transform。前面的gameObject是编译器自动加入的,除非你要指定一个不同的物体。使用 this可以访问当前的脚本组件。使用 this.gameObject可以访问该脚本所依附的游戏物体,当然你可以简单的使用 gameObject来访问此游戏物体。逻辑上来说,键入 this.transform与 tan

7、sform是相同的,如果你想访问一个组件而该组件并没有作为一个游戏物体成员包含在其中,你需要使用 gameObject.GetComponent() 2. 使用组件(Using Components) 组件是游戏中一个物体的行为和核心。它们是游戏物体的功能性模块。如果你还不理解游戏物体和组件之间的关系,请参考游戏物体部分。一个游戏物体包含许多不同的组件。缺省情况下。所有的游戏物体都包含一个变换(Transform)组件。这是因为变换表示物体的位置,旋转和缩放。没有变换组件,游戏物体将不会有位置。尝试创建一个空的游戏物体。单击 GameObject-Create Empty菜单项。选择新游戏物体

8、,并查看检视面板。每一个空的游戏物体都有一个变换组件可以使用检视面板来查看都有什么组件附加在游戏物体上。但一个组件被加入或删除的时候,检视面板将显示当前附加的组件。可以使用检视面板来改变任何组件的属性 (包括脚本)。添加组件可以通过组件菜单为当前的游戏物体添加一个组件。尝试添加一个刚体(Rigidbody)到刚创建的物体上。选择该物体并从菜单中选择 Component-physics-Rigidbody。现在你将会发现刚体属性显示在检视面板中,如果在该物体被选中的情况下按下播放键(Play)你将会有惊喜的发现。注意刚体是如何在一个空物体上添加功能的。附加了刚体组件的空物体可以附加任意数量的组件

9、到一个游戏物体。一些组件可以与其他一些组件一起工作。例如,刚体可以和任何碰撞物一起工作。刚体通过 Ageia PhysX物理引擎控制变换,并且碰撞器允许刚体与其它的碰撞器碰撞和交互。一个不同的组件组合例子是一个粒子系统 (Particle System)。它们使用一个粒子发射器 (Particle Emitter),粒子动画 (Particle Animator)和粒子渲染器(Particle Renderer)来创建一组移动的粒子。可以通过点击位于检视面板头部的问号访问组件的参考页。编辑组件一个组件昀重要的方面是其可扩展性。当你添加一个组件到一个物体上时,它有不同的可以调整的值或者属性(Pr

10、operties),也可以在游戏中通过脚本来调整它。有两种不同类型的属性:值(Values)和引用(References)。下图中是一个具有音频源 (Audio Source)组件的空游戏物体。在检视面板中所有音频源的值都是缺省的。这个组件包含一个单一的引用属性和七个值属性。音频剪辑 (Audio Clip)是一个引用属性。当这个音频源开始播放时,它将尝试播放 Audio Clip属性所引用的音频文件。如果没有添加引用属性,将会出现一个错误因为没有音品将被播放。你必须在检视面板中引用音频文件。你可以非常简单的从工程视图中将音频文件拖动到引用属性中。现在一个音效文件在音频剪辑属性中被引用组件可包

11、含任何其它类型组件的引用,文件或游戏物体。你只需拖动适当的引用到这个属性上。引用类型是非常有用和强大的,尤其是在使用脚本时。参考脚本教程。音频剪辑中剩下的七个都是值属性。都可以通过单击并按下 Enter键来调整它们。使用键盘输入值,并按 Enter保存它。你也可以通过使用 option-或 right-click或拖动数字属性来快速滚动这些值。音频剪辑中的值属性都是数字,但是一些属性也可以是字符串。例如,文本网格(Text Mesh)组件包含一个文本(Text)属性,这个属性可以接受字母数字字符。一些值可以包含字符,例如文本网格中的 Text属性测试属性当你的游戏处在播放模式 (Play Mo

12、de)中时,你可以在游戏物体的检视面板中修改它的属性。例如,你或许想试验不同的跳跃高度。如果你在一个脚本中创建了一个跳跃高度 (Jump Height),你可以进入播放模式,改变这个值,并按跳跃键查看结果。然后不需要退出播放模式就可以再次改变这个值。当你退出播放模式时你的属性值将恢复到播放前的值,因此,你不会丢失任何工作。这个工作方式,提供给你难以置信的方便来试验,调整,精简你的游戏而不必要花费大量的时间。移除组件如果你想移除一个组件,在检视面板的头部使用 option-或右击然后选择移除组件(Remove Component)。或者你可以单击位于组件头部问号旁边的选项图标。所有的属性值都将丢

13、失并且是不可恢复的。因此在移除组件前请确认你要这样做。组件-脚本关系尽管脚本(Scripts)看起来都与组件不同,事实是脚本是组件的一种类型。它是一种你自己创建的组件。你可以定义能够显示在检视面板中的成员,并且它将执行你写出的任何功能。脚本组件有很多组件可以通过任何脚本直接访问。例如,如果你想访问变换组件的变换(Translate)功能,你只需要使用 transform.Translate()或 gameObject.transform.Translate()。因为所有的脚本都是附加在游戏物体上的,所以当你写 transform的时候就暗示要访问当前脚本所在的物体的变换组件。当然这两者完全等价

14、的。使用 GetComponent() 有许多组件不能成为一个游戏物体类的成员。因此你不能隐式访问它们,必须显式访问它们。通过调用 GetComponent(“component name”)并存储一个引用到结果中。当你需要引用附加到该游戏物体上的其它脚本时这个方法是昀常用的。假设你在写脚本 B并且你想做一个脚本 A的引用,而这两者是附加在相同的游戏物体上的。你可以使用 GetComponent()来引用脚本。在脚本 B中你可以使用 scriptA = GetComponent(“ScriptA”); 然后你就能够在脚本 B中通过 scriptA.variableName来访问任何脚本 A中的

15、变量。 3. 预设(Prefab) 预设是一个存储在工程视图中可重用的游戏物体。预设可以被插入到任意数量的场景中,并可多次出现在同一场景中。当你添加一个预设到场景中,你就创建了一个它的实例。所有的预设实例都与原始的预设相关联并且本质上是它的一个克隆。不论在你的工程中存在多少实例,当你对预设作了任何改变后你将看到这种改变被应用到所有的实例上。不论你的预设是单一的一个游戏物体或者是一组游戏物体,在预设的变换层次中所作的任何改变都建碑应用到它的实例上。创建预设为了创建预设,你需要一个新的空预设。这个空预设不包含任何物体,并且你不能创建它的一个实例。将一个新的预设想象为一个空的容器,等待使用游戏物体数

16、据来填充。一个新的空预设,它不能被实例化,除非你使用游戏物体来填充它为了填充预设,你需要使用在场景中已经创建的游戏物体。下面是精确的步骤: 在工程视图中,选择一个你要放置预设的文件夹 从主菜单中选择 Assets-Create-Prefab,或者从工程视图的上下文菜单中选择 Create-Prefab 命名该预设 在层次视图(Hierarchy view)中,选择你要放入预设的游戏物体 将它们从层次使用中拖放到工程视图中在你执行了上述步骤后,游戏物体和它的子物体都将被拷贝到预设中。现在,预设可以在多个实例中被重用。在层次中的原始物体现在已经成了该预设的一个实例。创建更多预设的实例是非常简单的。

17、实例化预设为了在当前场景中创建一个预设的实例,从工程视图中拖动预设到场景(Scene)或层次视图中。这将从预设中拷贝所有父物体和所有的子物体。这些游戏物体被连接到(linked)预设,在工程视图中将使用蓝色的文本来显示它们。其中三个物体是预设的实例继承继承意味着当预设改变时,这些改变也将被应用到所有与之相连的物体上。例如,如果你添加一个脚本到一个预设,那么所有该预设的实例都将包含该脚本。然而你也可以修改单个实例的属性而不会破坏与预设的联系。一个链接物体检视面板(Inspector)中的所有公有属性都有一个复选框。这个复选框是一个重载标记(override flag)。如果该属性的重载标记被启用

18、,表示该属性将不会受到预设改变的影响。简单来说,这允许你修改实例物体并使得它们不同于它们的预设,而且又不会破坏它与预设之间的联系。一个实例物体和非继承一个实例物体和非继承 当你在检视面板中修改一个属性的时候,该属性的重载标记会自动启用。任何对已有属性的改变都不会打断与预设的联系。然而有一些改动将断开它,下面是保持预设连接的基本规则: 不能添加一个新的组件到一个实例上 不能从一个实例上移除一个组件 不能使用其他游戏物体作为实例的子物体如果你这样做,你将看到一个警告消息出现并要求你确认。当一个实例与预设断开后,对预设的修改将不会影响到这个游戏物体。如果你特意或是意外地断开了实例的连接,你可以应用你

19、的改变到预设并重新建立该连接。这将使得预设和所有的实例都发生改变。应用改变创建或编辑一个复杂预设的时候,你可以非常容易的在场景中实例化它们,编辑实例,并应用改变到预设。这种工作方式将允许你在场景视图中查看并修改预设。一旦你修改完成,选择该实例物体的根并从菜单中选择 GameObject-Apply changes to Prefab。所有的改变都被拷贝到预设中,并应用到每个场景中所有的实例上。将物体连接到预设可以将预设应用于现有的没有连接的物体上。这将添加所有该物体没有的组件到物体上并将其连接到预设。在某些场合这是非常有用的。为了连接任何已有的物体到到预设,按住 Option并将预设从工程视图

20、中拖放到层次视图的物体上。这个游戏物体将成为该预设的一个实例。这个操作不会改变预设本身,但是会在你刚连接的物体上添加或移除一些组件和子游戏物体。导入预设当你放置了一个网格资源到你的资源文件夹中时,Unity将自动导入该文件并生成一些看起来与预设相似东西。但它们并不是预设,这只是简单的资源文件。注意资源文件图标与预设图标是有点不同的这个资源在场景中作为一个游戏物体被初始化。可以在该游戏物体上添加或移除组件。然而你不能将任何改变应用到资源自身上因为这需要添加一些数据到该资源物体上!如果要创建需要重用的物体,你应该将资源实例作为预设。当你已经创建了一个资源实例,可以创建一个新的空预设并拖动游戏物体到

21、该预设上。现在你拥有了一个连接到该物体的标准预设。下面给出了一些详细的步骤: 从工程视图中拖动一个资源文件到场景或层次视图中。 修改该资源(例如,添加脚本,子物体,组件等等) 创建一个新的空预设。从菜单中选择 Assets-Create-Prefab,或者从工程视图的上下文菜单中选择 Create-Prefab 从层次视图中拖动该物体到预设上。 4. 灯光(Lights) 对于每一个场景灯光是非常重要的部分。网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。你很可能需要在每个场景中设置多个灯光。让他们一起工作需要一点练习但是结果是非常惊人的。简单的两个灯光可以通过从菜单中选择 G

22、ameObject-Create Other并将其添加到你的场景中。有三种类型的灯光。一旦添加了一个灯光你就可以像操作其他物体一样操作它。此外你还可以通过选择 Component-Rendering-Light为选中的物体添加一个灯光组件。在灯光的检视面板中有许多不同的选项检视面板中灯光的属性通过简单地改变灯光的颜色(Color),你可为场景添加完全不同的气氛。明亮,太阳光黄昏,中度光诡异的夜光光照灯光将使你的游戏具有个性和情趣。使用灯光来照亮场景和物体以便创建一个完美的可视氛围。灯光可以用来模拟太阳,燃烧的火光,闪光,炮火或者爆炸,下面给出几个例子。灯光的检视面板在 Unity中有三种不同类

23、型的灯光: 点光源(Point lights)从一个位置向所有方向发射相同强度的光,就像灯泡一样。 方向光(Directional lights)放置于无穷远处并影响场景中所有的物体,就像太阳一样。 投射光(Spot lights)从一个点向一个方向发光,像一个车灯一样照亮一个锥形的范围。属性 类型(Type):当前光照物体的类型 方向(Directional):一个放置在无穷远的光源。它将影响场景中的所有物体并不会衰减。 点(Point):一个从它的位置向所有方向发光的光源,将影响位于它的范围内的所有物体。 投射(Spot):照亮一个锥形(Spot Angle)的范围(Range),只有在这

24、个区域中的物体才会受到它的影响。 颜色(Color):光线的颜色。 衰减(Attenuate):光照是否随着距离而减弱?如果禁用,物体的亮度将在进入或离开它的光照范围时突变。可以用来制作一些特殊的效果。如果是方向光这个参数将被忽略。范围(Range):光线将从光源的中心发射多远 投射角(Spot Angle):如果是投射光,这个参数将决定圆锥的角度。 阴影(Shadows)(Pro only):将被该光源投射的阴影选项 类型(Type):Hard或 Soft阴影,Soft阴影更加的费时。 分辨率(Resolution):阴影的细节 强度(Strength):阴影的浓度。取值在 0到 1之间 投

25、影(Projectio):方向光阴影的投影类型 恒定偏移(Constane Bias):世界单元的阴影偏移 物体大小偏移 (Object Size Bias):依赖于投影大小的偏移。缺省的值为投影者大小的 1% Cookie:你可以为灯光附加一个纹理。该纹理的 alpha通道将被作为蒙版,以决定光照在不同位置的亮度。如果光源是一个投射或方向光,这个必须是 2D纹理。如果光源是点光源,就需要一个 Cubemap。 绘制光晕(Draw Halo):如果选择了该选项,一个球形的光晕将被绘制光晕的半径等于范围(Range). 闪光(Flare):可选的用于在光照位置上渲染的闪光 渲染模式(Render

26、 Mode):选择光源是作为顶点光,像素光还是自动的渲染方式。详细信息参考性能考虑部分。参数包括: 自动(Auto):渲染方法将在运行时确定,依据附近光照的亮度和当前的品质设置 (Quality Settings)来确定 强制像素(Force Pixel):光照总是以每像素的品质来渲染。只将其用于非常重要的效果(例如,玩家汽车的前灯)。 强制顶点(Force Vertex):光照总是以顶点光来渲染。 裁剪蒙版(Culling Mask):用于将一组物体从光照的影响中排除;参考层部分。细节在 Unity中有三种类型的光照,每一种都可以调整以适应你的要求。你可以创建一个包含 alhpa通道的纹理并

27、将它赋给光照的 Cookie变量。这个 Cookie将从光源处投影。Cookie的 alhpa蒙版乘以光照强度,在表面上创建亮的和暗的斑点。这是一种非常好的添加大量复杂效果的方法。 Unity中所有内置的 shader都可以与任何光照类型无缝融合。然而顶点光(VertexLit)shader不能显示 Cookie或阴影。在 Unity专业版中,所有的光照都可以随意的投射阴影。通过从阴影(Shadows)属性中选择 Hard Shadows或者 Soft Shadows来完成它。参考阴影部分。点光源点光源从一个点向所有方向发光。这是昀普通的一种光照类型,典型的用于爆炸,灯泡,等等。它们在图形处理

28、器上花费平均成本(尽管点光源阴影是昀花费成本的) 点光源点光源可以具有 cookie-带有 alpha通道的 Cubemap纹理。这个 Cubemap将在所有方向上投影。并且带有 Cookie的点光源将不会随着距离而衰减。带有 Cookie的点光源投射光投影光只能在一个方向上照亮一个圆锥范围内。者可以完美的模拟手电筒,车前灯或者是光柱,在大多数显卡上这是昀费时的。投射光投射光也可以有一个 cookie,一个纹理投影到光的圆锥上。这可以用来创建透过窗口的光照。非常重要的是纹理的边缘必须是黑色的,需要打开 Border Mipmaps选项并且环绕模式 (wrapping mode)被设置为 Cla

29、mp。参考纹理部分。带有 Cookie的透射光方向光方向光通常用于室外场景的阳光和月光。光照将影响场景中物体的所有表面。在大多数显卡上这是昀快的。方向光如果一个方向光具有一个 cookie,它将投影到光源 Z轴的中心。 Cookie的大小由 Spot Angle属性控制。在检视面板中设置 cookie纹理的缠绕模式 (wrapping mode)为重复(Repeat)。方向光投影一个云状的 cookie Cookie是一个非常好的方法为室外场景添加一些细节。你甚至可以在场景的上方慢慢移动光源以模拟移动的云。性能考虑光照可以使用两种方式来渲染:顶点(vertex)光和像素(pixel)光。顶点光

30、仅仅在游戏模型的顶点上计算光照,并在模型的表面进行插值。像素光将计算屏幕中每个像素,因此非常费时。一些老的显卡只支持顶点光。虽然像素渲染比较慢,但是它允许实现顶点光照不能实现的效果。凹凸贴图, cookie和实时阴影只能用像素光。透射光形状和顶点光高亮昀好使用像素模式。上诉三种类型的光使用顶点光模式时看起来如下:顶点光照模式的点光源顶点光照模式的透射光顶点光照模式的方向光光照对于场景的渲染速度具有很大的影响,因此必须在光照质量和游戏速度之间进行折中。因为像素光比顶点光更加费时,Unity只以像素质量来渲染昀亮的光。实际的像素光数量可以在质量设置(Quality Settings)中设置。你可以

31、使用渲染模式(Render Mode)属性显示的控制使用顶点光照(Vertex)或是像素(pixel)光照。缺省情况下 Unity将基于有多少个物体被光照影响来自动使用光照模式。实际上使用像素光照是由不同场合确定的。具有高光的大物体将全部使用像素光(根据品质设置)。如果玩家距离它们很远,附近的光将使用顶点光。因此,昀好将大物体从小物体中分离出来。创建 Cookie参考教程部分的如何创建投影光照 Coolie部分提示 带有 cookie的投影光在制作从窗口投射的光线是非常有用的。这种情况下,禁用衰减,并设置范围为正好到达地面。 低强度的顶点光可以非常好的提供景深效果。 为了达到昀大性能,使用 V

32、ertexLit shader。这个 shader只能用于顶点光照,并在低端的显卡上提供高吞吐量处理。 5. 相机(Cameras)相机是一个能够捕获并为玩家显示世界的设备。通过设置和操纵相机,你可以真实而独特的显示你的游戏。在一个场景中你可以有无限的相机。它们可以被设置为任意的渲染顺序,任意的的渲染位置,或者特定的场景部分。Unity中可以扩展的相机属性 清除标记(Clear Flags):决定场景的哪个部分需要清除。当需要使用多个相机以显示不同的游戏元素时这是非常有用的。 背景颜色(Background color):在所有的元素这之后的屏幕颜色,没有天空盒 正规化视口矩形(Normali

33、zed View Port Rect):在屏幕坐标系下使用四个值来确定相机的哪些部分将显示在屏幕上。 Xmin:相机视开始绘制的开始水平坐标 Ymin:相机视开始绘制的开始垂直坐标 Xmax:相机视结束绘制的开始水平坐标 Ymax:相机视结束绘制的开始垂直坐标 近裁剪面(Near Clip Plane):相对于相机昀近绘制点 远裁剪面(Far Clip Plane):相对于相机昀远的绘制点 视野(Field of view):沿着局部 Y轴的相机视角宽度 正视(Is ortho graphic):打开或关闭相机的景深效果 正交视大小(Orthographic size):在正交模式下的视口大小

34、 深度(Depth):相机的绘制顺序。具有较高深度的相机将绘制在较低深度相机的上面 裁剪蒙版(Culling Mask):包含或忽略物体层,可以在监视面板中将一个物体赋给一个层 渲染目标(Render Target)(Pro only):指示一个渲染纹理,相机视将输出到该纹理上。使用这个参数将使得相机不会渲染到屏幕上。细节相机是将你的游戏显示给玩家的必不可少的方法。它们可以被定制,脚本化或父子化以取得任何可以想象的效果。对于解谜游戏,你可以保持一个显示全部视的静态相机。对于一个 FPS游戏,你应该将相机作为玩家角色的子物体,并将其放置在角色的视平面上。对于竞赛游戏,你需要使得相机能够跟随玩家的

35、交通工具。你可以创建多个相机并赋予它们不同的深度(Depth)。unity3d教程相机将从低深度想高深度绘制。换句话说,一个具有深度 2的相机将绘制在具有深度 1的相机之上。你可以调整正规化视口矩阵 (Normalized View Port Rectangle)属性以调整相机视在屏幕上的大小和位置。这可以创建多个小视图,例如导弹控制器,地图视图和后视镜等等。清除标志每个相机在渲染时都存储了颜色和深度信息。屏幕上没有绘制的部分将为空,并在缺省情况下显示天空盒。当你使用多个相机的时候,每一个都将缓存它的颜色和深度信息,并积累每一个相机的渲染数据。当一个相机在你的屏幕上渲染它的视时,你可以设置 C

36、lear Flags来清除不同的缓存数据集。这个可以通过选择如下的四个选项之一来完成:天空盒(Skybox) 这是一个缺省的设置。屏幕上任何空的部分都将显示当前相机的天空盒。如果当前相机没有设置天空盒,它将缺省使用在渲染设置 (Rendering Settings)中的天空盒。然后将使用背景颜色。单色(Solid Color) 任何空的部分都将显示当前相机的背景色(Background Color)。仅深度(Depth only) 如果你想绘制一个玩家的枪并且在处于环境内部时不需要裁剪它,你可以设置一个深度为 0的相机来绘制场景,另一个深度为 1的相机来单独绘制武器。武器相机的 Clear F

37、lags应该被设置为仅深度。这将保持场景显示在屏幕上,但是会丢弃所有不存在 3D空间的所有信息。当武器被绘制时,不透明部分将完全覆盖所有已显示部分,而不论武器与墙有多么接近。最后绘制枪,清理相机的深度缓存之后不清除(Dont Clear) 这种模式将不会清除颜色或深度缓存。结果就是每一帧都将绘制在另一帧之上,就像涂抹效果一样。这个在游戏中并不常用,并昀好与自定义 shader一起使用。裁剪面(Clip Planes) 近裁剪面(Near)和远裁剪面 (Far Clip Pline)属性决定相机视渲染的开始和结束位置。这两个平面与相机的方向垂直并相对于相机的位置来确定。近裁剪面是昀近的开始渲染的

38、位置,而远裁剪面是昀远的位置。裁剪面同时确定了深度缓存的精度。通常情况下,为了得到更好的精度你应该将近裁剪面移动到尽可能远。裁剪蒙版(Culling Mask) 裁剪蒙版使用层来选择性的渲染一组物体。习惯的做法是将你的用户接口放置在不同的层上,然后使用一个独立相机来渲染它。为了使 UI显示在所有其他相机视的顶部,你还需要设置 Clear Flags和 Depth only并确定相机的深度比其他相机的高。正规化视口矩形 (Nomalized Viewport Rectangle) 正规化视口矩形能够定义相机的视将显示屏幕的什么位置上。你可以将地图放置在屏幕的右下角,或者将导弹提示视放置在屏幕的左

39、上角。只要一点设置工作,你就可以使用视口矩形 (Viewport Rectangle)来创建特有的行为。使用正规化视口矩形非常容易的创建一个两玩家的分屏游戏效果。在创建了两个相机之后,改变玩家一的 Ymin为 0.5,玩家二的 Ymax为 0.5。这将使得玩家一的相机显示在屏幕的上半部分,而玩家二的相机将显示在屏幕的下半部分。使用正规化视口矩形创建的分屏正交视图(Orthographic)使用正交相机将移除所有的景深效果,这在卷轴游戏和 2D游戏中昀常用的。景深相机正交相机。物体并不会随着距离而变小渲染纹理这个特性仅可用于 Unity Pro。它将一个相机视图输出到一个纹理上,然后可以将该纹理

40、应用到其他物体上。这使可以使得监视器的创建非常容易,还有倒影效果,等等。使用渲染纹理创建实时监视器提示 相机可以像其他物体一样可以被实例化,父子化和脚本化。 为了在竞技游戏中增加速度感,可以使用一个高视野(Field of View)。 如果添加一个刚体(Rigidbody)组件,相机可以被用于物理模拟。 在你的场景中你可以使用的相机数量没有限制。 正交相机可以非常好的用于 3D用户接口。 Pro版可以是你将相机视输出到纹理,称为渲染到纹理,以得到更独特的效果。 Unity有预装的相机脚本,可以在 Component-Camera Control中找到。试验它们的不同效果。 如果你发现了深度问题 (靠近其他面的一个面在闪烁 ),试着设置近裁剪面(Near Plane)尽可能大。 相机不能同时渲染到屏幕和纹理,只能使用一个。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁