基于Unity2018.2.15,Cinemachine插件的导入需要从菜单栏"Window"->"Package Manager"中进行下载并导入。导入完成之后,在菜单栏会新增加一项"Cinemachine"。
-
Virtual Camera普通虚拟相机
★ 创建Virtual Camera后,会发现MainCamera主摄像机上挂了Cinemachine Brain组件。
【Cinemachine Brain组件】:
场景中可以存在多个虚拟摄像机,Cinemachine Brain用于管理所有的虚拟摄像机。这个组件就是将当前的虚拟摄像机拿给真实存在的MainCamera主摄像机来渲染。所以虚拟摄像机不耗费性能,因为真实的相机只有一个。当存在虚拟相机时,MainCamera主摄像机会被锁死,要修改MainCamera主摄像机的位置,需要修改当前虚拟摄像机的位置。
- Live Camera:代表当前的虚拟摄像机。当有多个虚拟摄像机时,Cinemachine Brain组件的Live Camera设置总是最新创建的层级窗口靠下面的虚拟摄像机;
- Live Blend:当前的镜头转换名称。
- ShowDebugText:在Game窗口左上角显示当前虚拟相机的名称。
- Show Camera Frustum:展示摄像机的视锥体,显示摄像机可以看到场景的部分。
- Ignore Time Scale:虚拟相机实时响应,忽略Time Scale的影响。
- World Up Override:重载世界的向上方向(Y轴),虚拟相机是通过这个来判断世界环境。为Null时,使用世界的Y轴。
- Update Method:选择何时更新相机的位置和方向。固定更新( Fixed Update )、后期更新模式( LateUpdate )或以二者的组合进行摄像机的平滑处理。
- Default Blend:设置多虚拟相机时的混合使用及过渡时间;默认情况下,使用“缓入 ( EaseInout ) ”曲线形状进行两秒钟的混合。
- CustomBlends:自定义混合,并存储在 Cinemachine Blend Settings 文件中。单击create Asset以创建一个设置文件,用于存储自定义混合。
- Camera Cut Event:相机立即切换时事件。
- Camera Activated Event:相机切换时第一帧事件。
★ 虚拟摄像机身上有个组件,叫Cinemachine Virtual Camera。
【Cinemachine Virtual Camera】
- status:用于调试,有三种状态:Live:正在使用;Standby:准备状态;Disable:不能用。按Solo按钮会让相机切换到当前选中的这个虚拟相机。
- Game Window Guides:当【Follow不为null并且对应的Body为Framing Transposer】或者【Look At不为null并且对应的Aim为Composer/Group Composer】时,勾选Game Window Guides后,Game窗口会显示辅助线,用于设置虚拟相机的各个属性。
- Save During Play:虚拟相机的属性在运行时的修改可以被保存下来,退出Play状态时不会被重置。
- Priority优先级:虚拟相机的重要程度,用于Cinemachine Brain组件Live Camera的选择。数值越高代表优先级越高。
- Follow跟随目标:虚拟相机会跟随这个物体移动,Body属性基于这个目标物体更新Unity相机的位置。
- Look At瞄准:镜头瞄准的物体目标。Aim属性使用这个属性来更新Unity相机的旋转。
- Standby Update:准备状态时的更新方式。Never:不更新;Always:每帧更新;Round Robin:循环更新,所有处于准备状态的虚拟相机循环更新,每帧更新一个相机。当虚拟相机物体没有被禁用,但是优先级不足时,虚拟相机处于准备状态。这个属性会影响性能,通常设置为Never是最好的,但是有时候可能需要虚拟相机更新来做一些镜头相关的计算判断。
- Lens:Field Of View、Near Clip Plane、Far Clip Plane这三个参数是设置相机的视野大小及范围;Dutch:控制镜头的旋转。
- Transitions:虚拟相机的切换效果。
☆ Blend hint:
【 None:无,默认线性混合;
Spherical Position:根据Look At的物体球面旋转混合;
Cylindrical Position:根据Look At的物体柱面旋转混合(水平方向圆弧,垂直方向线性);
creen Space Aim When Target:在屏幕空间瞄准目标;】
☆ Inherit Positon:下一个相机变成活动相机时,从上一个相机继承位置,即保持两个相机位置相同。 - On Camera Live事件:相机变为活动时会触发对应的事件。
- Body:用于设置相机跟随物体移动的效果。
-【DoNothing】:相机不跟随目标移动,通常和Look At配合使用,模拟固定位置的跟随镜头。当Look At不为null并且对应的Aim为Composer时的效果如下:
-【Framing Transposer】:跟随目标移动,并在屏幕空间保持相机和跟随目标的相对位置,效果如下图。
- Center On Active:选中时,虚拟相机激活时会将镜头中心对准物体。不选中时,虚拟相机会将目标物体放置在最近的Dead Zone边缘。
- 当Follow设置的不是一个物体,而是一组物体,即Target Group时,Body列表和Aim列表会新增加几个参数。
- 创建一个Target Group:菜单栏选择Cinemachine > Create Target Group Camera。Unity会在场景中添加一个虚拟相机和Target Group。Follow和Look At属性会自动设置为这个Group。
-【Hard Lock to Target】:虚拟相机和跟随目标使用相同位置。
-【Orbital Transposer】:相机和跟随目标的相对位置是可变的,还能接收用户的输入。常见于玩家控制的相机。
- Binding Mode:绑定模式,从目标推断位置时使用的坐标空间
Lock To Target On Assign:本地空间,相机被激活或target赋值时的相对位置。
Lock To Target With World Up:本地空间,保持相机y轴朝上,Y轴和Z轴旋转为0。
Lock To Target No Roll:本地空间,锁定到目标物体,Z轴旋转为0。
Lock To Target:本地空间,锁定到目标物体。
World Space:世界空间。
Simple Follow With World Up:相对于目标的位置,使用相机的本地坐标系,保持相机y轴朝上。
- Yaw Damping:相机在y轴旋转的阻力系数。
- Pitch Damping:相机在x轴旋转的阻力系数。
- Roll Damping:相机在z轴旋转的阻力系数。
- Heading:计算Follow朝向的方法
- Definition:计算方法:
- Position Delta:基于当前帧和上一帧的目标位置之间的变化。
- Velocity:使用目标的刚体速度,如果目标没有Rigidbody组件,会使用Position Delta。
- Target Forward:使用目标的transform.forward作为heading的方向。
- World Forward:使用世界坐标系中的Vector3.forward作为heading方向。
- Bias:相机围绕旋转的偏移,单位是度数。
- Recenter To Target Heading:接收不到用户输入时,自动居中。
- Enable:是否启用。
- Wait Time:等待延迟时间,用户无输入后多长时间重新自动居中。
- Recentering Time:重新自动居中的过程花费的时间。
- X Axis:通过玩家输入控制Heading方向。
- Value:当前值
- Value Range:输入范围
- Speed:最大速度(Max Speed)或者最大增加速度(Input Value Gain)
- Accel Time:加速到最高速度所需要的时间
- Decel Time:减速到0所需的时间
- Input Axis Name:接收输入的Input Manager中的轴名称,空字符串代表不接收输入。
- Input Axis Value:玩家输入的值。可以直接通过自定义脚本控制。
- Invert:是否反转输入的值(取相反数)
-【Tracked Dolly】:相机沿着预先设置的轨道移动。
- 创建轨道:新建一个空物体,添加CinemachineSmoothPath组件,添加Waypoints。将该组件赋值给Body的Path属性。
- Roll:翻转,类似于过山车轨道效果。
- 勾选Auto Dolly-Enabled,摄像机会沿着轨道移动,效果如下:
-【Transposer】:跟随目标移动,并在世界空间保持相机和跟随目标的相对位置固定。 - Aim:设置相机旋转的效果。
【Do Nothing】: 不控制相机的旋转。
【Composer】: 保持目标物体在镜头内。
【Group Composer】: 保持多个目标在镜头内。
- Group Framing Size:目标应占据的屏幕大小比例。使用1填充整个屏幕,使用0.5填充一半的屏幕,依此类推。
- Framing Mode:指定构图时要考虑的屏幕尺寸。
- Horizontal 仅考虑水平尺寸。忽略垂直尺寸。
- Vertical 仅考虑垂直尺寸。忽略水平尺寸。
- Horizontal And Vertical 使用水平和垂直尺寸中较大的那个来获得最佳匹配。
- Adjustment Mode 如何调整相机以获得所需的取景。可以是缩放、拉近拉远或同时进行。
- Zoom Only 不移动相机,仅调整FOV。
- Dolly Only 移动相机,不修改FOV。
- Dolly Then Zoom 将相机移动到范围允许的最大范围,然后根据需要调整FOV。
- Max Dolly In:朝目标拉近相机的最大距离。
- Max Dolly Out:远离目标拉远相机的最大距离。
- Minimum Distance: 设置此项以限制相机可以接近目标的最小距离。
- Maximum Distance:设置此项以限制相机可以达到的最远目标距离。
- Minimum FOV:自动调节FOV时的最小值。
- Maximum FOV:自动调节FOV时的最大值。
【Hard Look At】: 保持目标在镜头的中心。
【POV】: 基于玩家的输入旋转相机。
- Vertical Axis:控制虚拟相机目标的垂直朝向。
- Vertical Recentering:当接收不到玩家输入时,自动在垂直方向重新居中。
- Horizontal Axis:控制水平方向。
- Horizontal Recentering:当接收不到玩家输入时,自动在水平方向重新居中。
【Same As Follow Target】: 相机的旋转和目标的旋转保持同步。 - Noise:模拟现实世界手持拍摄的晃动效果。
没有设置Noise及设置Noise,Noise Profile为6D Shake的效果如下: