Camera
Camera是一个设备,玩家通过它看世界。
屏幕空间点用像素定义,屏幕的左下为(0,0);右上是(PixelWidth,pixelHeight).Z的位置是以世界单位衡量的到相机的距离。
视口空间点是归一化的并相对于相机的。相机的左下为(0,0);右上是(1,1);Z的位置是以世界为单位衡量的到相机的距离。
世界空间点是以全局坐标定义的(例如:Transform.position)
Variables | 变量 |
---|---|
fieldOfView | 相机的视野,以度为单位 |
nearClipPlane | 近裁剪面的距离 |
farClipPlane | 远裁剪面的距离 |
renderingPath | 渲染路径 |
actualRenderingPath | 实际使用的渲染路径(只读) |
orthographicSize | 在正交模式下相机的一半尺寸 |
orthographic | 相机是正交的(true),是透视的(false)? |
depth | 相机在渲染顺序上的深度 |
aspect | 长宽比(宽度除以高度) |
cullingMask | 这个用来选择性的渲染部分场景 |
backgroundColor | 屏幕将被清理为这个颜色 |
rect | 相继被渲染到屏幕规范化坐标中的位置 |
pixelRect | 相机被渲染到屏幕像素中的位置 |
targetTexture | 描述渲染纹理(仅Unity专业版) |
pixelWidth | 相机有多宽,以像素单位(只读) |
pixelHeight | 相机有多高,以像素单位(只读) |
cameraToWorldMatrix | 从相机空间到世界空间的变换矩阵(只读) |
worldToCameraMatrix | 从世界到相机空间的变换矩阵 |
projectionMatrix | 设置自定义的投影矩阵 |
velocity | 获取世界空间中相机的速度(只读) |
clearFlags | 相机如何清除背景 |
layerCullDistances | 每层的消隐距离 |
depthTextureMode | 相机生成怎样的一个深度纹理 |
Functions | 函数 |
---|---|
ResetWorldToCameraMatrix | 在场景中让渲染位置反映相机的位置 |
ResetProjectionMatrix | 让投影反映正常的相机参数 |
ResetAspect | 恢复长宽比为屏幕的长宽比 |
WorldToScreenPoint | 从世界空间到屏幕空间变换位置 |
WorldToViewportPoint | 从世界空间到视窗空间的变换位置 |
ViewportToWorldPoint | 从视窗空间到世界空间的变换位置 |
ScreenToWorldPoint | 从屏幕空间到世界空间的变化位置 |
ScreenToViewportPoint | 从屏幕空间到视窗空间的变换位置 |
ViewportToScreenPoint | 从视口空间到屏幕空间的变换位置 |
ViewportPointToRay | 返回从相机出发穿过视点的一个射线 |
ScreenPointToRay | 返回一条射线从摄像机通过一个屏幕点 |
Render | 手动渲染相机 |
RenderWithShader | 用shader替代渲染相机 |
SetReplacementShader | 使相机渲染用shader替换 |
ResetReplacementShader | 从相机上移除shader替换 |
RenderToCubemap | 从这个相机渲染到一个立方贴图 |
CopyFrom | 使这个相机的设置与其他相机相同 |
Messages Sent | 发送消息 |
---|---|
OnPreCull | OnPreCull在相机开始裁剪场景之前调用 |
OnPreRender | OnPreRender在相机开始渲染场景之前调用 |
OnPostRender | OnPostRender 在相机渲染场景之后调用 |
OnRenderImage | OnRenderImage在所有渲染完成后被调用,来渲染图片的后期处理效果(仅限UnityPro) |
OnRenderObject | OnRenderObject 被用来渲染你自己的物体,使用或者其他函数 |
OnWillRenderObject | 如果物体可见,每个相机都会调用OnWillRenderObject |
Class Functions | 类函数 |
---|---|
main | 第一个启用的被标记为“MainCanmera”的相机(只读) |
current | 当前用于渲染的相机,只用于低级的渲染控制(只读) |
allCameras | allCameras 所有相机 |
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraTest : MonoBehaviour {
private Camera mainCamera;
// Use this for initialization
void Start () {
//获得Camera组件的方式
//mainCamera = GameObject.Find ("MainCamera").GetComponent<Camera> ();
//第一个启用的被标记为“MainCanmera”的相机(只读)。前提是场景中必须有标记为mainCamera的摄像机
mainCamera = Camera.main;
}
// Update is called once per frame
void Update () {
//检测鼠标在摄像机中经过的位置产生的射线是否与场景中某物体发生碰撞
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
bool isCollider = Physics.Raycast (ray, out hit);
if (isCollider) {
//根据射线的方向画一条射线,只能在Scene窗口查看
Debug.DrawRay (ray.origin, ray.direction * 10, Color.yellow);
Debug.Log (hit.collider);
}
}
}