一、安装
可以直接从package manager里面安装(踩过的坑:导入samples时可能会出现sample和当前使用的unity版本不兼容的情况,更换版本即可)
二、cinemachine使用说明
场景中需要已存在一个unity camera,然后在该相机上挂载CinemachineBrain组件
(ps:如果不是在timeline中使用虚拟相机的话,这两个属性会决定多个虚拟相机之间切换的方式)
或者直接使用cinemachine新建相机,这样会自动在原有的unity camera上挂载CinemachineBrain组件。步骤:
在timeline中能够用到的是红框中的两种相机。
1、Visual Camera:
(ps:如果不使用timeline,priority属性高的虚拟相机会被优先启用,所以在调整相机视角时需要点击solo按钮激活当前要调整的虚拟相机)
Follow属性和body属性(follow是指相机要跟随的物体,body里选择虚拟相机跟随物体的跟随算法):
LookAt属性和Aim属性(类似follow和body):
Lens Vertical FOV:和普通unity相机一样
Noise:相机抖动的算法
总结:可以创建多个Visual Camera,调好参数以后在timeline中对相机进行融合即可
2、Dolly Camera with Track:新建一个这种相机,会生成一个虚拟相机和一条路径,运行时相机会在这条路径上移动。
勾选enabled,这样就会在相机要跟随的物体移动的时候,相机自动在路径上移动。(如果相机跟随的物体不动的话,相机是不会动的)
路径的设置方法:可以在场景中选中路径点调整,也可以在inspector里直接调整参数
三、cinemachine和timeline
先打开一个timeline窗口(一定要从当前场景的物体上创建或者打开timeline窗口,不然无法将虚拟相机拖到track上。因为timeline有asset和实例的概念,从场景中打开那么打开的就是一个timeline的实例,而要是选中timeline asset打开,那么打开的就只是一个asset,不会建立起和当前场景的关联),然后将带有CinemachineBrain的相机拖到timeline窗口的左侧区域中,并添加cinemachine track:
然后将设置好参数的虚拟相机拖到timeline轨道上:
以第一种方式切换相机时,相机是以过渡的方式切换的;以第二种方式切换相机时,相机是直接切换的(踩过的坑:以第二种方式切换相机时,可能会因为HDRP管线的bug导致场景闪白)。
可以将前后两个clip重叠1帧来解决这个问题;目前测试了两个修改volumeprofile的方法也可行:
一、对于有Fog的,关闭Fog
二、把Exposure调成auto
以上,大概就是在timeline创建cinemachine的过程。
但是这样的问题就是这个timeline绑定到了场景中的某个物体上。如果项目里有一个timelinemanager这样的东西,就希望timeline是动态加载的。那么先可以先按照上面制作完一个timeline asset,然后在代码中进行绑定操作。
绑定操作可以参考:
timeline的动态绑定
cinemachine的动态绑定
在第二篇文章中博主说有两种绑法
在第二种绑法中用到了 PlayableDirector.playableGraph.GetResolver() API。这里要注意playableGraph是只有在PlayableDirector处于播放状态时才会存在(参见unity 论坛)
第二种方法的SetResolver没找到太多相关资料,赋值一直不起作用。
看到这个,还没试
推荐第一种方法,能少踩几个坑
更新:
关于Body和Aim:
新版本似乎是更新了第三人称的跟随模式3rd Person Follow,看到之前没有记录各个属性的作用,就顺便更新一下。
- Do Nothing:相机固定位置,不会改变
- 3rd Person Follow:以第三人称视角跟随目标一起运动,相应的可以调节的参数就很多。
shoulder offset:相机和跟随目标的相对位置,此偏移位于目标模型空间
camera side:指相机相对目标的水平偏移靠左还是靠右,当shoulder offset的x不为0的时候这个属性才有意义
arm length:相机相对目标的竖直偏移,这个偏移会影响相机在竖直方向上的旋转 - Framing Transposer:看文档说一般用于2d游戏或正交相机,还没实际用过
- Hard To Target:和跟随的目标坐标保持一致,可以将跟随目标设置在角色眼睛位置,可以实现第一视角
- Transposer:相机和跟随目标保持固定的相对偏移。这个相对偏移又有几种属性:
Lock To Target On Assign: 当follow target被指定时相对偏移就确定了
Lock To Target With World Up:保持相机y轴朝上且不会改变
Lock To Target No Roll:roll角不会变化
Lock To Target:没有锁定轴旋转的限制
World Space:在世界坐标系下保持固定偏移
Simple Follow With World Up:限制了相机不能在x轴上有偏移 - Orbital Transposer:在transposer的基础上还受输入的影响
- Tracked Dolly:相机沿预设路径移动
Body的这些模式一般都会和Aim复合使用,还是要实际看一下效果。在测试的时候没注意使用了3rd person follow的模式去做第一视角,发现怎么调都不对,后来改成Transposer模式以后发现基本不需要调参数就可以实现。