Cinemachine初体验

一、安装

可以直接从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没找到太多相关资料,赋值一直不起作用。
看到这个,还没试

推荐第一种方法,能少踩几个坑

更新:

关于BodyAim
在这里插入图片描述
新版本似乎是更新了第三人称的跟随模式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模式以后发现基本不需要调参数就可以实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值