透视相机
Field of View:
//设置FOV Axis=Vertical时,fieldOfView的值为45f。
m_camera.fieldOfView=45f;//m_camera.fieldOfView 永远指的都是竖直方向上展开角度(水平方向的展开角度是根据camera.aspect计算出来的)
//设置FOV Axis=Horizontal时,fieldOfView的值为45f。
m_camera.fieldOfView=2f*Mathf.Atan(Mathf.Tan(45f*Mathf.Deg2Rad*0.5f)/m_camera.aspect)*Mathf.Rad2Deg;
设置相机剪裁面的宽高比:
m_camera.aspect=640f/960f;
设置一个透视相机始终看向目标,且不管相机距离物体多远,物体宽度都能占满屏幕的宽。
float distance=100f; //相机到物体的距离
float objectWidth=50f; //物体的宽
float slope=(objectWidth*0.5f)/distance;//物体一半宽/距离
m_camera.fieldOfView=2f*Mathf.Atan(slope/m_camera.aspect)*Mathf.Rad2Deg;
计算指定距离相机剪裁面的宽高:
float distance=20f;//剪裁面的距离
float halfFOV=(m_camera.fieldOfView*0.5f)*Mathf.Deg2Rad;
float height=distance*Mathf.Tan(halfFOV);
float width=height*m_camera.aspect;
正交相机
如:相机的大小为800x480,要使相机适应800x480像素的图,则
Size = 相机高/2/像素单位
= 480/2/100
= 2.4
(屏幕的宽高比Aspect Ratio = frac{屏幕宽度}{屏幕高度})
(frac{摄像机实际宽度}{摄像机实际高度}=frac{摄像机实际宽度}{摄像机orthographicSize imes 2}=frac{屏幕宽度}{屏幕高度})