camera以左下角为屏幕的(0,0)点坐标,以右上角为屏幕的(camer.pixelWidth,camera.pixelHeight)点坐标,如果用单位化方式显示,则左下角为(0,0)点,右上角为(1,1)点
实例属性
aspect | 设置摄像机视口比例 | cameratoworldmatrix | 变换矩阵 | cullingMask | 摄像机按层渲染 | eventMask | | layerCullDistances | | layerCullSpherical | | orthographic | | pixelRect | | projectionMatrix | | rect | | renderingPath | | targetTexture | | worldTocameraMatrix | |
aspect设置摄像机视口比例
?当硬件显示屏的宽高比例与aspect的比例值不同时,视图将发生变形
public class Aspect_ts : MonoBehaviour
{
Camera camera;
private void Start()
{ //camera,aspect的默认值即为当前硬件的aspect值
camera=GetComponent<Camera>();
Debug.Log("camera.aspect的默认值: "+camera.aspect);
}
private void OnGUI()
{
if (GUI.Button(new Rect(5.0f, 50.0f, 200.0f, 45.0f), "aspect=1.0f"))
{//重置当前摄像机的aspect值
camera.ResetAspect();
camera.aspect = 1.0f;
}
if (GUI.Button(new Rect(7.0f, 70.0f, 200.0f, 45.0f), "aspect=2.0f"))
{//重置当前摄像机的aspect值
camera.ResetAspect();
camera.aspect = 2.0f;
}
if (GUI.Button(new Rect(10.0f, 10.0f, 200.0f, 45.0f), "aspect还原默认值"))
{//重置当前摄像机的aspect值
camera.ResetAspect();
}
}
}
cameratoworldmatrix变换矩阵
返回从摄像机的局部坐标系到世界坐标系的变换矩阵(只读)
forward方向是自身坐标系的-z轴方向,其他GameObject对象的forwa方向为自身坐标系z轴方向
public class CameraToWorkdMatrix_ts : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{ Camera camera = GetComponent<Camera>();
print("camera was rotated position:" + transform.position);
Matrix4x4 m= camera.cameraToWorldMatrix;
Vector3 v3 = m.MultiplyPoint(Vector3.forward * 5.0f);//为沿着camera局部坐标系的-z轴方向前移5个单位的位置在世界坐标系的中的位置
Vector3 v4 = m.MultiplyPoint(transform.forward * 5.0f);//为沿着camera世界坐标系的-z轴方向前移5个单位的位置在世界坐标系的中的位置
print("旋转前v3 " + v3);
print("旋转前v4 " + v4);
transform.Rotate(Vector3.up * 90.0f);
Debug.Log("Camera旋转后的位置" + transform.position);
m = camera.cameraToWorldMatrix;
v3 = m.MultiplyPoint(Vector3.forward * 5.0f);//为沿着camera局部坐标系的-z轴方向前移5个单位的位置在世界坐标系的中的位置
v4 = m.MultiplyPoint(transform.forward * 5.0f);//为沿着camera世界坐标系的-z轴方向前移5个单位的位置在世界坐标系的中的位置
print("旋转后v3 " + v3);
print("旋转后v4 " + v4);
}
结果如下:
?cullingmask:摄像机按层渲染
此属性有选择的渲染部分物体,=_1渲染场景中的任何层物体,cullingMask=0,不渲染任何层
|