Unity Cinemachine插件学习笔记

以下都是转载内容,能够比较直观的学习一些基础内容。现在的Cinemachine更新了许多新的功能,但是Cinemachine插件都ExamplesScences,去看一下官方例子和文档来学习更佳

*版本要求Unity2017.1及以上。

参考资料: 
[官方] Unity 2017.1正式版发布 
Cinemachine插件:Cinemachine。 
结合Timeline实现动画:Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画 
官网教程:Timeline and Cinemachine (Cameras)

  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噪声。可以模拟相机手持抖动效果。

 
如上图配置,虚拟相机会找到带脑子的相机并控制他的位置角度,游戏画面中,黄点是目前目标坦克的位置(设置了z轴偏移量5,所以实际位置在坦克向前5个单位)。最里面黄色区域(Dead Zone)为黄点自由移动区域,在这个范围内 目标移动了并不会改变相机位置。第二层绿色区域(Soft Zone)为目标允许在的范围,不过随时间推移最后会限制在最里层。最外层红色区域为目标不允许停留范围,及坦克一旦脱离绿色以外的区域,会立即移动相机来保持目标不离开镜头范围。

单个目标

 
实际运行时,是使用Hard constraint。因为主角旋转幅度大,镜头变化大,使用Transposer的自由范围会产生不适。

多个目标

变量名说明
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
  • 9
  • 10

 
(上面粒子有Bug,是更新2017版本后出现的,不要在意。)

单个目标 和 多个目标之间切换

 
上图自定义混合变化包含两个虚拟相机的切换,在资源文件中创建(Create/Cinemachine/Blender/Settings),分别是单目标和多目标(其实这里加不加都一样,因为样式和默认的一样)。代码很简单,只要设置虚拟相机是否开启即可。

    // 多目标转换到单目标
    cmFollowCameraRig.followVitualCamera.enabled = true;            // 激活单个目标虚拟相机组件
    cmMultiTargetCameraRig.multiVirtualCamera.enabled = false;      // 关闭多目标虚拟相机组件

    // 单目标转换到多目标,与上面相反
    cmFollowCameraRig.followVitualCamera.enabled = false;
    cmMultiTargetCameraRig.multiVirtualCamera.enabled = true;   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
游戏开始,多目标转换到单目标

主角死掉,单目标转多目标

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity Cinemachine插件Unity引擎中的一个相机控制工具,它可以帮助开发者更轻松地创建复杂的相机动画和过渡效果,同时还可以自动调整相机的位置和角度,以确保最佳的视觉效果。该插件还提供了一些高级功能,如虚拟相机、跟踪目标、深度感知等,可以帮助开发者更好地控制游戏中的相机行为。 ### 回答2: Unity Cinemachine插件是一个高度自适应的相机系统,用于帮助Unity开发者轻松地创建动态的镜头。这个插件不仅仅是摄像机的配置,而是提供了一个全新的方法来设计人物行动和摄像机的交互,借此来增强某一场景的表现力。Cinemachine能为不同的开发者提供个性化的解决方案,因为开发者可以在不触及代码的情况下,使用各种不同类型的虚拟相机 - 跟随、先进、自由移动等不同类型的摄像机,因此它比较适合小团队与独立游戏开发者,因为它可以不用投资大量的资源到时光秀或其他高质量动画。 Unity Cinemachine提供了独特而有效的相机控制方案,可以根据游戏中不同情境下的需求来快速适应不同相机的设置,比如,在自定义可编程的相机轨迹上进行摄像机角度的调整。此外, Unity Cinemachine还提供了高度集成的相机控制API,游戏开发者可以通过自己的脚本将其与自己的游戏系统集成,以实现自己的相机控制逻辑。 总结起来,Unity Cinemachine插件提供了极大的灵活性和控制能力,同时也简化了开发者的工作,让开发者能够更容易地设计一个兼顾美感和功能性的虚拟镜头。有了该插件,游戏开发者能够将注意力更多地转移到游戏的核心玩法之上。 ### 回答3: Unity CinemachineUnity3D中一款非常强大的相机架构插件,可以帮助我们轻松地创建高质量的摄影效果,包括镜头移动、对焦、深度效果和视野控制等等。 Unity Cinemachine 插件的最大优势在于其高度的可定制性,这使得它可以适应各种不同的游戏类型和场景需求。用户可以通过图形化界面对插件进行配置,而不必编写复杂的代码。通过使用该插件,开发人员可以更加轻松地创建出高质量的游戏体验,节约了大量的时间和精力。 Unity Cinemachine 插件中的一个重要组件是 Virtual Camera,它可以让我们在场景中创建一个虚拟相机,然后通过配置其属性和参数,来调整场景的视觉效果,包括摄像头的位置、方向、移动速度和旋转等等。我们可以使用 Cinemachine 实现丰富多样的摄像头特效和运动效果,例如深度效果、镜头晃动等。这些特效可以使游戏更加真实、动态和生动。 此外,Unity Cinemachine 插件还提供了流畅的镜头转换功能,可以让我们在场景中平滑地切换不同的相机视角,避免了不流畅的过渡和闪屏问题。 总之,Unity Cinemachine 插件Unity3D开发者非常实用的插件之一,它能够帮助我们轻松地创建出高质量的游戏体验,提高了游戏开发的效率和可拓展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值