• Cinemachine Brain


    Cinemachine Brain

    • Show Debug Text: 开启后会在Game视图中显示当前Live状态下的VirtualCamera的文本信息,如图:
      image
    • Show Camera Frustum: 开启后在Scene视图中会始终显示Camera的视锥体(Scene视图需启用Gizmos)。
    • Ignore Time Scale: 使VirtualCamera响应用户的输入和阻尼时忽视TimeScale的设置。
    • World Up Override: 指定VirtualCamera在世界空间中向上的向量,若为空,则为世界空间中Y轴的方向
    • Update Method: VirtualCamera更新位置和旋转的方式。
    选项 说明
    Fixed Update VirtualCamera的更新与物理模块同步
    Late Update 在MonoBehaviour的LateUpdate中更新
    Smart Update 每个VirtualCamera根据其目标的更新方式来更新,推荐使用
    Manual Update VirtualCamera不会自动更新,必须我们手动的调用ManualUpdate()来更新(应该在Camera跟随或看向的目标移动后调用)
    • Blend Update Method: 主摄像机混合和更新的时机
    选项 说明
    Fixed Update 仅在Update Method使用的是Fixed Update并且在混合时发现剧烈震动时使用
    Late Update 在MonoBehaviour的LateUpdate中出来,推荐使用
    • Default Blend: 用于设置两个VirtualCamera混合的方式,除Cut外,其它方式可在后面设置一个混合的持续时间
    选项 说明
    Cut 瞬切,立马显示下个VirtualCamera的画面
    Ease In Out S型曲线,混合开始和结束时比较平滑(慢->匀速->慢)
    Ease In 混合结束时比较平滑(匀速->慢)
    Ease Out 混合开始时比较平滑,然后匀速到结束(慢->匀速)
    Hard In 混合开始时很很慢(从超级慢开始加速)
    Hard Out 混合结束时很很慢(从较快速度减速到超级慢)
    Linear 匀速移动
    Custom 自定义混合曲线
    • Custom Blends:

      • 在前面的设置中,设置的是所有的VirtualCamera的混合方式,但是假如当我们的场景中有多个VirtualCamera,并且不同的VirtualCamera之间的混合方式不尽相同的时候,就需要通过该属性来设置不同VirtualCamera之间的混合方式了。会生成一个Asset用来存储数据,具体设置如下。
        image

      • 需要注意的是,在From和To中设置的是VirtualCamera的名称,也就是一个字符串,而非是VirtualCamera的引用。我们可以通过设置内置的ANY CAMERA来代表任何一个VirtualCamera。

      • 当要执行Blend操作时,首先会从Custom Blends中查找匹配项,若没有,则使用Default Blend的设置。若有多条匹配项,则优先选择最符合要求的。(例如vc1混合到vc2,一项是From:vc1,To:vc2,一项是From:vc1,To:ANY CAMERA,那么前面那项是更符合要求的,会被使用)若有多条最符合要求的,则选择最先找到的那一条

    • Events:

      • Camera Cut Event: 当一个VirtualCamera变为Live状态,并且其混合方式为Cut的情况下触发
    brain.m_CameraCutEvent.AddListener(CameraCutEvent);
    void CameraCutEvent(CinemachineBrain brain){
        Debug.Log(brain);
    }
    
    • Camera Activated Event: 当一个VirtualCamera变为Live状态时触发,若带有混合,则触发在混合开始的第一帧。
    brain.m_CameraActivatedEvent.AddListener(CameraActivatedEvent);
    //第一个参数为新的Live状态的VirtualCamera,第二个参数为上一个Live状态的VirtualCamera
    void CameraActivatedEvent(ICinemachineCamera liveCamera, ICinemachineCamera lastCamera){
        Debug.Log(liveCamera);
        Debug.Log(lastCamera);
    }
    

    更多说明:
    Unity Cinemachine 初识: https://zhuanlan.zhihu.com/p/103584975
    https://blog.csdn.net/wangjiangrong/article/details/108726387
    https://docs.unity3d.com/Packages/com.unity.cinemachine@2.8/manual/CinemachineUsing.html

  • 相关阅读:
    python学习笔记
    【JavaScript】如何判断一个对象是未定义的?(已解决)
    【Eclipse】一个简单的 RCP 应用 —— 显示Eclipse 的启动时间。
    Win7 系统如何关闭休眠功能?(已解决)
    【Eclipse】Ubuntu 下菜单栏失效了,怎么办?(已解决)
    【Ubuntu】更新系统时出现Hash校验和不符的错误(已解决)
    【wget】一条命令轻松备份博客(包括图片)
    【Eclipse】启动时报错:No Java virtual machine (已解决)
    git 命令自动补全
    快马和慢马
  • 原文地址:https://www.cnblogs.com/kingBook/p/15606575.html
Copyright © 2020-2023  润新知