UnityCinemachine插件学习笔记
以下都是转载内容,能够⽐较直观的学习⼀些基础内容。现在的Cinemachine更新了许多新的功能,但是Cinemachine插件都ExamplesScences,去看⼀下官⽅例⼦和⽂档来学习更佳
*版本要求Unity2017.1及以上。
参考资料:
Cinemachine插件:。
结合Timeline实现动画:
官⽹教程:
  Cinemachine在2017版中正式加⼊,结合Timeline可以轻松的制作出⼀下相机动画。相⽐Unity⾃带的标准相机,这个新相机插件可操作的变量更多,不同虚拟相机(⽤来控制相机的)可以平滑转换等,具体可见上⽅第⼀个链接。
Cinemachine
选项名说明
Virtual Camera普通虚拟相机。最常⽤的相机设备。其实下⾯的都是虚拟相机。
FreeLook
Camera
⾃由查看相机。可以保证镜头内出现头和⾝体,及相机的活动范围在⽬标周围圆柱(曲⾯的)表⾯,常⽤于第三⼈称视⾓。
State-driven Camera 状态驱动相机。添加虚拟相机列表,可以在不同的相机直接直接实现平滑切换,同时其⼦相机列表如果没有设置LookAt对象等,会直接使⽤这个⽗相机的对象。
ClearShot Camera ⼲净镜头相机。类似上⼀个相机,区别在于这个相机可以通过判断⼦相机的CinemachineCollider(如果有),看是否相机被场景物体阻碍,切换相机。具体可看其源码注释。
Dolly Camera
with Track
可推拉的轨道相机。通过结合轨道路径,就可以模拟像拍电影般镜头轨道移动。
Group Target
Camera
多⽬标相机。可以同时设置多个⽬标。Cinemachine Brain
  相机的脑⼦,只有这个组件要添加到Camera上,才能实现任何虚拟相机的效果。
变量名说明
Live Camera当前选择的虚拟相机。
Live Blend当前的镜头转换名称。
Show Debug Text在游戏画⾯左上⾓显⽰调试信息。
Show Camera Frustum显⽰相机的视锥体,相⽐原来⾃带的边框,这个会裁切掉不在显⽰范围内的边线。
World Up Override重载世界的向上⽅向(y轴),虚拟相机是通过这个来判断世界环境。
Default Blend默认相机切换模式。
Custom Blends⾃定义相机切换模式。
Camera Cut Event相机⽴即切换时事件。
Camera Activated Event相机混合(就是有切换变化,不是Cut时)切换时第⼀帧事件。
变量名说明
Cinemacine Virtual Camera
变量名说明
Status :
Live/Standby/Disable 当前这个虚拟相机的状态。Live为正在使⽤,Standby为准备使⽤(没在⽤,但如果上⼀级停⽤了,可能会切换到当前虚拟相机),Disable为不能⽤。按Solo按钮会让相机切换到这个虚拟相机(包括Disable)。
Priority虚拟相机的优先级,如果同时有多个虚拟相机,使⽤优先级最⾼的。如果多个同等级的,应该是按Hierarchy顺序到第⼀个虚拟相机。
Look At相机的视⾓⽬标。
Follow相机的跟随⽬标。
Lens镜头常⽤配置。视⾓区域,最近最远裁切平⾯,镜头旋转⾓度。
Aim瞄准设置,有三种:Hard constraint,固定距离,没有任何平滑效果。Composer,有平滑效果的瞄准⽬标。Group
Composer,同时瞄准多个⽬标。
Body相机本⾝。四种:Hard constraint,固定距离,相当于第⼀⼈称。 Orbital Transposer:轨迹转换器?似乎是模拟第三⼈称。 Tracked Dolly,轨道推拉,相机只能在轨道上移动(即使设置了Follow对象),需要轨道路径CinemachinePath。
Transposer,普通的镜头转换。
Noise
噪声。可以模拟相机⼿持抖动效果。
单个⽬标
多个⽬标
变量名说明
Position Mode位置模式。Group Center,所有⽬标的中⼼(长⽅体中⼼)。 Group Average,所有⽬标位置和权重的平均值。
Rotation Mode旋转模式。Manual,⼿动,就是根据虚拟相机⾝体设置。Group Average,所有⽬标旋转平均值。
因为⽬标不是简单的Transform,⽽是包含权重和半径的。所以在使⽤代码添加时,需要创建其结构体:CinemachineTargetGroup.Target。是在类内嵌的结构体,具体可见其源码。下⾯⽤代码实现添加对象组。
public void SetTargets(params Transform[] targets)
{
if (targets.Length <= 0)
return;
CinemachineTargetGroup.Target[] cmTargets = new CinemachineTargetGroup.Target[targets.Length];
for (int i = 0; i < targets.Length; i++)
cmTargets[i] = new CinemachineTargetGroup.Target() { target = targets[i], weight = 1f, radius = 1f };
targetGroup.m_Targets = cmTargets;  //将创建的列表赋给⽬标对象组。
}
1
2
3
4
5
6
7
8
unity 教程
9
10
(上⾯粒⼦有Bug,是更新2017版本后出现的,不要在意。)
单个⽬标和多个⽬标之间切换
上图⾃定义混合变化包含两个虚拟相机的切换,在资源⽂件中创建(Create/Cinemachine/Blender/Settings),分别是单⽬标和多⽬标(其实这⾥加不加都⼀样,因为样式和默认的⼀样)。代码很简单,只要设置虚拟相机是否开启即可。
// 多⽬标转换到单⽬标
abled = true;            // 激活单个⽬标虚拟相机组件
abled = false;      // 关闭多⽬标虚拟相机组件
// 单⽬标转换到多⽬标,与上⾯相反
abled = false;
abled = true;
1
2
3
4
5
6
7
游戏开始,多⽬标转换到单⽬标
主⾓死掉,单⽬标转多⽬标

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。