纳金网

标题: Unity3d基础教程6-摄像机(摄像机的基本属性及动态切换) [打印本页]

作者: paopao    时间: 2013-1-6 17:01
标题: Unity3d基础教程6-摄像机(摄像机的基本属性及动态切换)
最近项目比较忙,有一段时间没有更新教程了。今天终于空下来有时间写点东西了。
今天看一下unity3d里面的摄像机是怎么调用和操作的。
打开unity3d新建一个工程。在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中。点击Main Camera在Inspector中出现Main Camera的组件信息。如图

在camera组件中可以对是相机的一些属性进行调节。
Clera Flags:清除标记。下拉菜单一共有4个选项。

Skybox:天空盒,背景显示天空盒。如果该相机没有添加天空和则显示背景颜色。Solid Color:纯色,背景显示我没在Background中调制的颜射。Depth Only :仅深度不显示任何背景。空白处为透明。Don't Clear :不清除,每帧绘制在下一帧之上,造成涂片效果。一般很少用到。
Background :背景颜色。
Culling Mask :剔除遮罩,通过标签来选择物体是否被相机渲染。
Projection:相机类型,分为透 视相机和正交相机。


perspective:透 视相机。
Orthographic:正交相机。
区别如图:



                 透 视效果                                                正交效果
当我们选择perspective是Field of view:视野范围,调节摄像机的视野。
当我们选择Orthographic是size:设置正交相机的视口大小。
Clipping Planes :Near为近距裁剪,Far为远距裁剪。
Normalized View Port Rect:用四个数值来表示这个相机的视图将绘制在屏幕的什么地方,使用屏幕坐标系(值0-1)。(注:屏幕坐标系的0,0点是在屏幕的左下角的)
在unity中做屏幕的分屏用到的就是这个参数。
举个例子说明一下分屏的方法:
首先创建一部相机。


将Main Camera相机的Normalized View Port Rect属性里的x:0,y:0.5,w:1,h:0.5。
意思是是相机显示的坐标为(0,0.5)宽度为1,高度为0.5。
将新添加的Camera的Normalized View Port Rect属性里的x:0,y:0,w:1,h:0.5。
意思是是相机显示的坐标为(0,0.5)宽度为1,高度为0.5。
Game视图将显示如下结果


Depth :深度,用来确定不同相机的绘制顺序。具有较大值的相机将被绘制在具有较小值的相机的上面。
Rendering Path:渲染路径,下面有四个选项Use Player Settings:使用播放器设置。Vertex Lit :顶点光照。Forward :快速渲染。Deferred Lighting: 延迟照明。根据项目需求选择相应的渲染路径。
Target Texture 目标纹理,它将放置相机的视图到一个纹理上,该纹理可以被应用到另一个对象。这使得它可以方便地创建体育场大屏幕、监控摄像机、倒影等等效果。
Flare Layer:光晕层,让镜头光晕(Lens Flares ) 出现在图像中。默认情况下,相机已经贴上光晕层(Flare Layer)。
GUI Layer:用户界面层,使二维图形用户界面可以渲染。在检视面板点击GUI层(GUI Layer)的复选框,可以启用和禁用在相机绘制GUI。
Audio Listener:音频侦听器,音频***扮演着像麦克风这样的设备。它接收任何在场景输入的音频源(Audio Source),并通过计算机的扬声器播放声音。
这样一部摄像机的基本属性已经介绍完了。下面我们看下怎么给场景添加天空盒。
第一步:选择相机,点击菜单栏中的component->Rendering->Skybox.


然后在Inspector视图最下面多了一栏Skybox。
然后给他添加一个天空球。

(注:一般我们添加材质球的时候不用这种方法,应为一个场景中我们可能会添加多部相机,当相机切换的时候。天空球也会切换。这样就要给每个相机添加天空球。这样就增加工作量和系统负担。我们一般会将天空求直接添加的场景中。

添加方法:点击菜单栏的Edit->Render Settings。在Inspector视图中将制作好的材质球拖入Skybox Material 中即可)



天空球的制作方法,
一:新建一个材质球


选择新建的材质球,命名为skybox1,如图所示将材质设置为Skybox类型的。


结果如图:


在相应的地方添加相应的图片。这样一个天空球就制作完成了。
还有一个简单方法就是导入unity3d自带的资源里面有自作完成的天空球。
(注:自己制作天空球是要注意图片的属性Wrap Mode属性应改为Clamp格式,否则会出现接缝。)
将天空球制作完毕后添加的摄像机上,如图:

下面我们来看下怎么实现两个相机的动态切换。
首先我们在unity中创建两个相机。分别为camera0,camera1.
创建一个js脚本文件。写入一下代码。
var camera0 : Camera; //定义一个名字为camera0的相机对象  
var camera1 : Camera; //定义一个名字为camera1的相机对象

   
function Update ()   
    {   
   if (Input.GetKey ("1")) //如果敲击键盘的"1"  
    {   
    camera1.enabled = tr ue; //camera1激活  
    camera0.enabled = false; //camera1停止  
    }   
   if (Input.GetKey ("0")) //如果敲击键盘的"0"  
   {   
   camera1.enabled = false; //camera1停止  
   camera0.enabled = tr ue; //camera1激活  
   }   
   }  

(注:代码里的tr ue不知道为啥会变成***e,所以中间加了空格,复制代码是记得把空格去掉)
将脚本添加到一个游戏物体上运行游戏。敲击键盘的1和0键。检测代码。

作者: xiongz    时间: 2013-1-6 17:42
支持一下·······

作者: 艾西格亚    时间: 2013-1-6 19:58
很实用的教程,这个相机的切换是很多初学者会问的设定
作者: xiongz    时间: 2013-1-7 11:27
支持一下,顶。。。。。

作者: xiongz    时间: 2013-1-7 11:28
支持一下,顶。。。。。

作者: 狂风大尉    时间: 2013-1-29 22:30
希望更多的朋友分享制作经验





欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5