二、Camera类——A、实例属性
Camera类用来控制游戏虚拟场景的展示,以左下角为屏幕的(0,0)坐标,以右上角为屏幕的(camera.pixelWidth,camera.pixelHeight)点坐标。
主要包含常用的类实例属性和实例方法:
A、实例属性:
1、aspect
public float aspect {get;set;}
设置Camera视口的宽高比,即宽度/高度
camera.ResetAspect( ); //自带的重置摄像机aspect方法?
camera.aspect=2.0f;
2、cameraToWorldMatrix
public Matrix4x4 cameraToWorldMatrix{ get; }
返回从摄像机的局部坐标系到世界坐标系的变换矩阵
Matrix4x4 m=camera.cameraToWorldMatrix;
Vector3 v3=m.MultiplyPoint(Vector3.forward*5.0f);
结合Matrix4x4类种的MultiplyPoint方法对摄像机进行移动
3、cullingMask
public int cullingMask{ get; set; }
按层有选择性地渲染场景中的物体
=-1:渲染场景中任何层物体
=0:不渲染场景中任何层
=(1<<2)(1<<3)(1<<4):只渲染分别位于2、3、4层的物体
4、eventMask
public int eventMask { get; set; }
选择那个层的物体可以响应鼠标事件,但需要满足两个条件:
①物体在摄像机的视野范围内
②2的layer次方的值与eventMask进行与运算(&)后结果为仍为2的layer次方的值
5、layerCullDistanes
public float[] layerCullDistances {get; set; }
摄像机基于层的消隐距离,必须小于或等于摄像机的farClipPlane才有效
就是摄像机移动过程中,达到某个距离后,该层的物体就会消失
6、layerCullSpherical
public bool layerCullSpherical {get; set; }
基于球面距离剔除,true Or false
7、orthographic
public bool orthographic{get; set; }
获取和设置当前摄像机的投影模式,true为正交投影;false为透视投影
关于这两种投影的区别:
正交投影:物体在视口中的大小只与正交视口的大小有关,于摄像机到物体的距离无关,主要用来呈现2D效果
透视投影:物体大小与摄像机视口夹角以及摄像机与物体的距离都有关系,有远小近大的效果,用来3D呈现
8、pixelRect
public Rect pixelRect {get; set; }
设置摄像机被渲染到屏幕中的坐标位置
pixelRect属性:实际像素大小设置显示视口的位置
rect属性:单位化方式显示视口的位置
camera.pixelRect=(x0,y0,w,h) //x0视口右移像素,y0视口上移像素,w,h对应camera.pixelWidth / Height
9、projectionMatrix
public Matrix4x4 projetionMatrix {get; set; }
设置摄像机的自定义投影矩阵
在切换变换矩阵时通常需要先用camera.ResetProjectionMatrix( )重置camera的变换矩阵
10、rect
public Rect rect{get; set; }
使用单位化坐标系的方式来设置摄像机视图的位置和大小
camera.rect=(x0,y0,w0,h0)
x0,y0:A物体 向右 / 向上 移动了A的总宽度倍数,有效范围 [-1,1]
w0,h0:放缩比例,相等时为等比例放缩 [0,1]
11、renderingPath
public RenderingPath renderingPath {get; set; }
获取和设置摄像机的渲染路径,为枚举类型,共有4种设置方式:
UsePlayerSettings:工程种设置,即Edit>ProjectSettings>Player种各个平台下的设置
VertexLit:使用顶点光照,最低消耗的渲染路径,不支持阴影,适用于移动及老式设备
Forward:使用正向光照,基于着色器的渲染路径,支持逐像素计算光照和来自一个平行光的实时阴影
DeferredLighting:使用延迟光照,支持实时阴影,计算消耗达,硬件要求高,不支持移动设备,仅专业版可用
12、targetTeture
public RenderTexture targetTexture{get; set; }
调用此属性可生成目标渲染纹理,仅专业版可用。把视图作为Renderer Texture,添加一个Material付给对象的Renderer组件,实时地看到摄像机的视图,用来做实时跟踪类的功能
13、worldToCameraMatrix
Public Matrix4x4 worldToCameraMatrix{get; set; }
返回或设置从世界坐标系到当前摄像机自身坐标系的变换矩阵