Camera
基础概念
Unity 场景在三维空间中表示游戏对象。由于观察者的屏幕是二维屏幕,Unity 需要捕捉视图并将其“平面化”以进行显示。它使用摄像机来实现这一点。在 Unity 中,您可以通过将一个 Camera 组件添加到游戏对象来创建摄像机。
常用属性
Culling Mask
通过选择层来渲染指定层的对象,Unity中每个对象都被分配了一个层,默认为“Default”层
Projection:透视和正交摄像机
正交:
透视:
现实世界中的摄像机(实际相当于人眼)在观察外界事物时,物体距离视点越远,看起来越小,这就是透视摄像机的效果,显示的对象不随距离变远而缩小的摄像机称为正交摄像机,在透视和正交模式下观察场景称为摄像机投影。
- FOV Axis:视野轴
Vertical:垂直轴,设为该项后,调整FieldOfView会改变相机上下开合角度
Horizontal:水平轴,设为该项后,调整FieldOfView会改变相机左右开合角度 - Field Of View: 视角范围(相机的视野拉伸),视角越大,视野越大,同时焦距越短
Clipping Planes: 裁剪平面
Near和Far指定了其裁剪的区域范围,若不处于这个范围的不被渲染,可以节省计算量,设置多少合适,看需求。
Occlusion Culling:遮挡剔除的开关
这个选项勾选有助于提升游戏性能,比如不在摄像机范围内的物体,将不会被渲染出来
实现一个简易的摄像机跟随
public Transform target; // 要跟随的目标对象
public Vector3 offset = new Vector3(0, 10, -10); // 摄像机相对于目标的偏移量
public float smoothSpeed = 0.125f; // 平滑移动的速度
void LateUpdate()
{
if (target != null)
{
Vector3 desiredPosition = target.position + offset;
Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed);
transform.position = smoothedPosition;
// 使摄像机始终看向目标
transform.LookAt(target);
}
}