Unity Cinemachine(虚拟相机)的基础入门使用
如何安装
直接在PackageManager中安装即可
VirtualCamera(虚拟相机)
如上图,在场景中创建一个虚拟相机(VirtualCamera)
1:面板中会多一个“CM vcam1”,此时 MainCamera的操作需要通过“CM vcam1”来完成,针对于MainCamera本身的操作将会失效(如改变位置等)
2:MainCamera后多出一个红色图标,表示此时已被虚拟相机控制
Look at & Follow (聚焦与跟随)
在“CM vcam1”的面板中:
Fllow:跟随目标物体一起移动
Look At:始终聚焦在目标物体上
Body:虚拟相机跟随时的一些参数调整
创建多个虚拟相机(多镜头)
当场景中创建多个虚拟相机时,主相机的操控权由最后一个被激活的虚拟相机控制,且虚拟相机之间的切换有切换的转场动画,如下图
新创建的“CM vcam2”控制了主相机
当“CM vcam2”被隐藏,相机的控制权由上一个被激活的“CM vcam1”掌控
虚拟相机的混合模式(切换虚拟相机时转场动画)
类型有:切割、缓入缓出、 缓入、 缓出、 硬入、 硬出、 线性、 自定义(从上至下),此时设定的切换动画会强加给所有的虚拟相机切换
自定义虚拟相机切换动画
1:创建“Custom Blends”并保存
2:在CustomBlends中自定义各个虚拟相机之间的切换动画
结合TimeLine自动转场
1:创建TimeLine窗口
2:创建空物体,选中空物体后创建对应的Playable
3:将虚拟相机拖拽至最左侧空白区域,在弹框中选择第一个。将需要的虚拟相机全部进行添加,自定义设置对应的顺序以及时间即可
Timeline自带的Cinemachine Track的基础使用
1:找到挂载TimeLine的空物体,在TimeLine面板中点击加号,选择Cinemachine Track
2:将挂载有Cinemachine的Camera赋值进去后,将目标虚拟相机拖入Timeline的轨道进行调整
3:可以通过在轨道上推动相机的动画块,使其产生重叠的部分,重叠的部分就是已经设置好的转场动画(在挂载有Cinemachine的Camera中设置的转场动画)
推轨相机
Dolly Camera with Track:相机围绕焦点在轨道上运行
Dolly Track with Cart:自定义相机轨迹
Dolly Camera with Track(自定义轨道的推轨相机)
1:创建推轨相机,会生成两个新物体
2:在DollyTrack中将轨道自定义创建出来
3:将需要注视或者跟随的目标赋值,并调整(Follow一般在Body中设置,LookAt一般在Aim中设置)
4:在TimeLine中给相机设置成为 Animation Track
5:在TimeLine中点击录制,通过改变PathPosition的方式来创建一系列关键帧,录制完毕即可
自由相机(FreeLook)
1:创建FreeLookCamera_自由相机
2:给自由相机绑定上Follow和LookAt之后,会出现由三个红色圆圈和一条弧线构成的“环轨”,环轨规定了自由相机的移动范围,在inspector->Obrits中可以改变环轨的参数
StateDrivenCamera(状态驱动相机)
可以根据不同的动画状态来驱使不同状态的相机
1:创建StateDriveCamera,并将带有动画状态机(必要条件)的目标物体赋值给An imatedTarget
2:创建若干个虚拟相机来调整机位,新创建的相机需要点击“solo”将相机变为Live模式才可以进行调整
3:调整完毕之后可以设置对应的动画状态与机位的绑定,并调整动画效果来实现动画状态绑定机位的效果
ClearShot(切镜相机)
1:创建切镜相机
2:CollideAgainst设置障碍物层级,该层级的一切物体都会被视为障碍物,所以玩家的层级要和场景的层级分开设置 如上图,玩家的层级为Player 障碍物的层级为Default
3:Shot Evaluation:设定一个距离,当该相机与玩家的距离达到设置的最大距离时,此时就将优先级转移给另一个相机
4:勾选SaveDuringPlay后,在运行状态下进行的数值改变,同样会被保存下来
5.添加好机位之后,进行数值调整即可
TargetGroup(一个相机追随多个玩家)
1:创建TargetGroupCamera
2:Group Composer:保持多个目标在镜头内;Group Farming Size:设置目标行程的包围和占屏幕的比例
MinimumFoV、MaximumFoV:最大、最小的视野范围
3:设置对应的目标物体后调整参数即可
BlendListCamera(混合列表相机)
根据时间的不同来切换不同的机位
1:创建BlendListCamera
2:设置不同的虚拟相机,以及相机之间切换的时间和动画方式即可
MixingCamera(混合相机)
1:创建混合相机(mixingCamera)
2:可以设置不同相机的权重占比,权重占比越高则相机的优先级也越高,镜头越偏向权重高的相机,若权重一样,则会自动创建处于中间机位的相机,一般情况下在项目运行过程中使用脚本来控制相机之间的权重变化
DollyTrackWithCart(轨道物体)
1:创建轨道物体
2:设置物体运动的轨道,
Roll:旋转角度,可以设置物体在运动中的旋转
Resolution:轨道精度,数值越高,轨道的精细度就越高
Looped:勾选之后可以让轨道闭合起来,一般用于设置可以往返循环播放的轨道
3:将需要运动的目标物体放入DollyCart下,并在Speed处设置一个速度,开始运行时,物体便会沿着设定好的轨道去进行运动,可以再添加一个虚拟相机来对物体进行追踪和跟随
CinemachineBrain的属性
LiveCamera:当前启用的相机
LiveBlend:相机切换的一个过程(如下图)
ShowDebugText:属性的Debug展示(如下图)
ShowCameraFrustum:是否展示视锥体
ignoreTimeScale:相机的行为是否收到时间缩放的影响
WorldUpOverride:可以设置一个自定义的坐标来代替世界坐标的Y轴,由于摄像机的y轴与世界坐标的y轴的夹角需要始终小于90度,当超过90度时,相机会强行改变自身的坐标,造成相机运动不流畅,所以可以自定义一个坐标代替世界坐标系,来缓解这个问题
UpdateMethod:(设置摄像机与什么同步)FixedUpdate:与物理刚体同步 LateUpdate:与画面绘制去同步SmartUpdate:根据实际情况选择同步ManualUpdate:自行编写代码自定义控制同步
Events:
Camera Cut Event:相机切换的一瞬间发生的事件
Camera Activated Event:相机切换的第一帧时发生的事件
VirtualCamera的属性
SaveDuringPlay:勾选之后,在运行中对相机进行的修改调整在运行结束后也可以被保存下来
Priority:相机权重
Dutch:镜头画面旋转
Body和Aim的一些属性
Body:
相机运行时的算法选择(上图)
从目标推断位置时设置的坐标空间
Aim
DeadZone:(空白区域)死亡空间 将目标物体始终锁定在设定出来的空间内
SoftZone:(蓝色区域) 当物体进入到蓝色区域时,会将物体重新移动到死亡空间内(空白区域)
Screen:控制死亡空间(空白区域)在屏幕中的位置
Cinemachine案例学习
镜头抖动:
Noise选择“Basic Multi Channel Perlin”
在 Noise Profile中选择效果
Amplitude Gain调整强度