大家好,又见面了,我是你们的朋友全栈君。
一、安装
可以直接从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没找到太多相关资料,赋值一直不起作用。 看到这个,还没试
推荐第一种方法,能少踩几个坑
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140461.html原文链接:https://javaforall.cn