U1L10-2——Camera代码相关
本章代码关键字
1 2 3 4 5 6 7 8 9 10
| Camera.main Camera.allCamerasCount Camera.allCameras Camera.onPreCull Camera.onPreRender Camera.onPostRender .界面上的参数 Camera.main.WorldToScreenPoint() Camera.main.ScreenToWorldPoint() Camera.aspect
|
重要静态成员
获取摄像机
获取主摄像机
1
| print(Camera.main.name);
|
获取摄像机的数量
1
| print(Camera.allCamerasCount);
|
获取所有摄像机
1 2
| Camera[] allcamera = Camera.allCameras; print(allcamera.Length);
|
渲染相关委托
摄像机 剔除被挡住的东西之前 处理的委托函数
1 2 3 4
| Camera.onPreCull += (c) => {
};
|
摄像机 渲染前 处理的委托
1 2 3 4
| Camera.onPreRender += (c) => {
};
|
摄像机 渲染后 处理的委托
1 2 3 4
| Camera.onPostRender += (c) => {
};
|
重要成员
界面上的参数
界面上的参数 都可以在Camera中找到
下面的这句代码 是获取了主摄像机对象 上的深度 进行设置
世界坐标转屏幕坐标
转换过后 x和y对应的就是屏幕坐标 z对应的 是 这个3D物体里屏幕所在的平面的距离
用最多的例子是 头顶血条的大小的功能
1 2
| Vector3 v = Camera.main.WorldToScreenPoint(this.transform.position); print(v);
|
屏幕坐标转世界坐标
这个需要写在Update()里
1 2
| print(Input.mousePosition); print(Camera.main.ScreenToWorldPoint(Input.mousePosition));
|
这个z轴很重要,代表视锥横切面距离摄像机有多远
这里输出的点是固定的,鼠标在屏幕坐标的z是0,这意味鼠标在摄像机视锥的顶点,也就是该摄像机的世界坐标上,因此输出了摄像机的世界坐标
屏幕坐标的z代表视锥横切面距离摄像机有多远
1 2 3 4
| Vector3 v = Input.mousePosition; v.z = 10;
print(Camera.main.ScreenToWorldPoint(v));
|
拓展内容——视口坐标系转换相关
Camera的视口坐标系转换相关
补充:获取Game窗口的宽高比
1 2 3 4
| void Start() { print(Camera.main.aspect); }
|
将宽高比设置为16:10:
输出: