安装Cinemachine
通过Packages Manager,选择Unity Registry,可以搜到Cinemachine。
添加虚拟摄像机(Virtual Camera)
选择Virtual Camera,此时会在主摄像机上添加CinemachineBrain,它用来控制不同摄像机的切换,混合,另外自动生成一个虚拟摄像机。
Live Camera 显示当前正在使用的相机。
Live Blend 当发生相机切换时,这里会显示对应的相机,类似“相机2from相机1”。
Show Debug Text 会在Game视图左上角显示当前使用的相机和相机之间的切换。
Show Camera Frustum 显示当前相机的视锥体。
World Up Override 设置相机向上的向量,默认None表示世界空间中Y轴的方向,即 (0, 1, 0)。不然使用设置的GameObject的Y轴的方向。在俯视角游戏中设置该选项可以避免万向节锁(gimbal-lock)。
Update Method 更新相机位置和旋转,与什么方法同步。
- Fixed Update 与物理引擎同步。
- Late Update 与画面绘制同步,MonoBehaviour 中的 LateUpdate。
- Smart Update 根据目标的更新方式更新每个虚拟相机。
- Manual Update 写代码更新。
Blend Update Method 两个相机切换时与什么进行同步。
Default Blend 默认的相机切换模式。
Custom Blends 自定义两个相机间的切换模式。
Camera Cut Event 相机发生瞬间切换(Cut)时触发的事件。
Camera Cut Event 相机在非瞬间切换时,第一帧触发的事件。
可以看到虚拟相机的几个重要模块
- Lens:调整FOV参数
- Body:控制相机与目标物之间的相对位置
- Aim:控制相机的旋转
- Noise:相机抖动
- Extensions:扩展模块,如碰撞处理等。
Body提供了几种算法设置虚拟相机的移动
- 3rd Person Follow:第三人称跟随
- Framing Transposer:屏幕空间中保持相机和目标物的相对位置,常用于2D游戏
- Hard Lock To Target:把相机和目标物位置朝向进行绑定,常用于第一人称游戏
- Orbital Transposer:玩家可以控制相机在一个圆环上移动
- Tracked Dolly:相机沿着预设的轨道移动
- Transposer:相机和目标物的相对位置固定
Aim提供了几种算法来控制相机的旋转
- Composer:保持目标物在镜头内,可以设置多种约束
- Group Composer:保持多个目标物在相机内
- Hard Look At:保持目标物在相机中心
- POV:根据用户的操作旋转相机
- Same As Follow Target:将相机的旋转设置为跟随目标的旋转
跟随效果(Follow)
点Solo按钮会切换到当前相机能看到的画面。
Save During Play表示游戏运行时修改参数也会保存下来。
Follow是跟随的物体
Follow Offset设置相机的偏移量
Body属性选择相机跟随的方式,Transposer表示跟随目标移动,并在世界空间中保持相机和跟随目标之间的距离。
多个摄像机时,Priority设置优先级。
Damping用于设置阻尼,也就是相机移动的速度。
Follow和Body的设置只会影响到相机的Position,不会影响Rotation。
注视(Look At)
将模型的某个节点添加到Look At,相机会注视这个节点。
Aim属性用于设置相机旋转时使用什么算法,Composer为保持目标物体在镜头内。
屏幕中间空白的是死亡区,节点在这个区域内,摄像头就不会旋转。外圈蓝色的是缓冲区,当节点进入缓冲区,摄像机才会旋转并尽量保持节点在死亡区内。最外圈红色表示节点不能进入的区域。
Look At和Aim的设置只会影响到相机的Rotation。
抖动(Noise)
Noise用于设置一些摄像机抖动效果