unity虚拟相机cinemachine 之ScriptingExample源码解读轻松理解其作用

2023-11-03

我从demo里面找到了脚本的源码,运行的效果,是5秒切换到这个cube立方体,又5秒切换到另外一个 cylinder,

public class ScriptingExample : MonoBehaviour
{
    CinemachineVirtualCamera vcam;
    CinemachineFreeLook freelook;

    void Start()
    {
        // Create a Cinemachine brain on the main camera
        var brain = GameObject.Find("Main Camera").AddComponent<CinemachineBrain>();
        brain.m_ShowDebugText = true;
        brain.m_DefaultBlend.m_Time = 1;

        // Create a virtual camera that looks at object "Cube", and set some settings
        vcam = new GameObject("VirtualCamera").AddComponent<CinemachineVirtualCamera>();
        vcam.m_LookAt = GameObject.Find("Cube").transform;
        vcam.m_Priority = 10;
        vcam.gameObject.transform.position = new Vector3(0, 1, 0);

        // Install a composer.  You can install whatever CinemachineComponents you need,
        // including your own custom-authored Cinemachine components.
        var composer = vcam.AddCinemachineComponent<CinemachineComposer>();
        composer.m_ScreenX = 0.30f;
        composer.m_ScreenY = 0.35f;

        // Create a FreeLook vcam on object "Cylinder"
        freelook = new GameObject("FreeLook").AddComponent<CinemachineFreeLook>();
        freelook.m_LookAt = GameObject.Find("Cylinder/Sphere").transform;
        freelook.m_Follow = GameObject.Find("Cylinder").transform;
        freelook.m_Priority = 11;

        // You can access the individual rigs in the freeLook if you want.
        // FreeLook rigs come with Composers pre-installed.
        // Note: Body MUST be Orbital Transposer.  Don't change it.
        CinemachineVirtualCamera topRig = freelook.GetRig(0);
 /*       CinemachineVirtualCamera middleRig = freelook.GetRig(1);
        CinemachineVirtualCamera bottomRig = freelook.GetRig(2);
        topRig.GetCinemachineComponent<CinemachineComposer>().m_ScreenY = 0.35f;
        middleRig.GetCinemachineComponent<CinemachineComposer>().m_ScreenY = 0.25f;
        bottomRig.GetCinemachineComponent<CinemachineComposer>().m_ScreenY = 0.15f;*/
    }

    float lastSwapTime = 0;
    void Update()
    {
        // Switch cameras from time to time to show blending
        if (Time.realtimeSinceStartup - lastSwapTime > 5)//每5秒递增。
        {
                print("Time.realtimeSinceStartup " + Time.realtimeSinceStartup + ",lastSwapTime:" + lastSwapTime);
            freelook.enabled = !freelook.enabled;
            lastSwapTime = Time.realtimeSinceStartup;
        }
    }
}

Time.realtimeSinceStartup表示启动开始的累计时间, 如果大于5秒 ,

就把某个虚拟相机禁用或者启用,因为这个优先级是11,如果启用,则镜头会移动到11这个。
其次lastSwapTime每次打印会一次是5秒,10 秒 10秒,这个不难理解,

image.png

另外这个红色的立方体是一直在自转,从源码中分析发现没有写相关代码。
其次当镜头切换到圆柱的时候是可以滚动鼠标让视图变化的。

freelook.m_LookAt = GameObject.Find("Cylinder/Sphere").transform;

lookat代表镜头的角度跟随 物体

freelook.m_Follow = GameObject.Find("Cylinder").transform;

代表镜头始终贴近物体,无论物体移动到哪。

至于CinemachineVirtualCamera middleRig = freelook.GetRig(1)没看懂具体干嘛的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity虚拟相机cinemachine 之ScriptingExample源码解读轻松理解其作用 的相关文章

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • unity中创建询问弹出窗口

    在开发过程中进程会遇到需要弹出一个窗口询问用户是否进行的操作 今天就来制作一个这样弹出窗口 然后根据弹出窗口的选择内容不同进行不同的操作 本例中主要是为了删除一个数据 而在删除数据操作前需要得到用户的一个确认操作 这里面主要用到了Notif
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • U3D游戏开发中摇杆的制作(NGUI版)

    在PC端模拟摇杆 实现控制摇杆让玩家或者物体移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine public clas
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste

随机推荐

  • 高德地图开发(二、地图控件)

    高德地图开发 二 地图插件加载 一 加载单个插件 二 加载多个插件 有同步 异步等方法 我用得都是异步 图层类型切换 MapType 与3D罗盘控制 AMap ControlBar 会重叠 需要另写样式让它们分开 插件类型链接 https
  • TensorFlow bug(六)——Dimensions of inputs should match: shape[0] = [1,600,750,3] vs. shape[2] = [1,600

    问题描述 在用R FCN目标检测API训练我自己的数据时 我对原代码做了些改动 原来的rfcn resnet101 coco config文件中 batch size的值为1即一次处理1张图片 我改成了别的数 2 8 16 32 都会出现如
  • Unity 3D物体、UI同屏||3D物体在UI界面显示

    先来猜一下这两个石头人 哪一个是UI 哪一个是3d物体 答案是中间那一个 这种UI显示3D物体适用很多场景 比如说商店展示模型展示 例子特效 2 5d游戏 实现起来很简单 接下来我们实现一下 实现步骤 1 新建一个相机 对准角色 2 UI新
  • usb设备拓扑关系

    usb设备拓扑关系 1 简介 2 usbfs和debugfs拓扑 2 1挂载方式 2 2拓扑关系信息说明 2 2 1usb总线上的设备信息 2 2 2总线上特定设备的详细信息 2 3debugfs中的设备拓扑信息 T Topology B
  • react之旅(八)React生命周期

    一 react 16前的生命周期 1 1 constructor constructor props context 如果想 在组件其他地方是可以直接接收的 使用props或context 则需要以参数形式传入 只要组件存在construc
  • 求n的阶乘的算法框图_你不知道的阶乘与gamma函数

    你不知道的阶乘 阶乘对于有数学基础的人来说都不陌生 简单理解就是数的累乘 10的阶乘10 10 9 8 7 6 5 4 3 2 1 但是我们有没有思考过 如分数的阶乘是如何运算的 有没有方法估算一个数的阶乘 其实 1 2的阶乘等于 的平方根
  • 入门级题解:剑指 Offer 06. 从尾到头打印链表

    题目地址 https leetcode cn com problems cong wei dao tou da yin lian biao lcof 主要是 vector 容器的用法 之前学过 忘了 vector的详解 https blog
  • SpringBoot+VUE实现文件导入并将其保存到Liunx系统

    SpringBoot VUE实现文件导入 一 需求 二 前端代码实现 2 1 显示实现 2 1 1 a标签实现 2 1 1 1 上传标签实现 2 1 1 2 查看标签实现 2 2 上传文件和文件查看界面实现 2 2 1 上传文件界面 2 2
  • 云原生之使用Docker部署Redis数据库

    云原生之使用Docker部署Redis数据库 一 检查系统版本 二 检查docker状态 三 检查docker版本 四 搜索redis镜像 五 下载redis镜像 六 创建redis容器 1 创建数据目录 2 运行redis容器 3 检查r
  • 挺详细的一篇Cadence学习笔记

    目录 下载方法及连接 更新补丁后快捷方式失效怎么办 cadence软件介绍 Cadence Product Choices 新建工程 如何不打印右下角的信息框 原理图库 复合元器件 元器件逆时针放置引脚 添加元件库 元器件编号重新排列 页面
  • 对于msvcr120.dll丢失的问题,分享几种解决方法

    msvcr120 dll的作用是提供一系列的运行时函数和功能 以便应用程序能够正常运行 这些函数和功能包括内存管理 异常处理 输入输出操作 数学运算等 在没有这个库文件的情况下 应用程序可能无法正常启动或执行特定的功能 甚至会出现错误提示
  • JavaScript常用的定时器

    1 定时器 setTimeout setInterval clearInterval clearTimeout 1 1setTimeout 定时器 window setTimeout 调用函数 延迟的毫秒数 该定时器在定时器到期后执行调用函
  • 又被薪资倒挂了。。。

    十月中旬 一年一度的秋招接近尾声了 各家公司开始陆续开奖 公布今年校招各个档位的薪资水平 互联网的确有些卷 不仅体现在工作时长和强度上 就连每年应届生的薪资 也在同行的不断加码下 水涨船高 不过 薪资的卷 是令校招生喜闻乐见的事情 尽管 这
  • 深入理解 TCP 拥塞控制

    随着网络技术的飞速发展 越来越多的工作依赖网络完成 基于互联网的实时通信系统的质量和实时性也很大程度也依赖于网络质量 然而 在Internet的TCP IP体系结构中 拥塞的发生是其固有的属性 网络拥塞是指用户对网络资源 包括链路带宽 存储
  • python自动化办公——读取PPT写入word表格

    Python自动化办公 读取PPT内容写入word表格 文章目录 Python自动化办公 读取PPT内容写入word表格 一 需求分析 二 导入依赖 三 代码 四 结果及总结 一 需求分析 由于我们知识图谱课程需要将课堂小组汇报的PPT总结
  • Scala与Java混编译:java日志不打印的问题

    1 背景 我本地测试 大部分代码是scla开发 少部分是java代码 然后本地测试都是正确的 19 09 04 20 01 32 INFO TopoSparkSubmitter 加载Spark默认配置文件 Some etc spark2 c
  • 二进制简单计算

    二进制简单计算 1 24 35 值 用二进制补码方式进行计算 24的补码 00011000 35的原码 10100011 35的反码 11011100 35的补码 11011101 24 35的值 00011000 11011101 111
  • R语言中if语句使用方法之超详细教程

    在R语言中 if属于一种分支结构 即根据某个条件执行相关的语句 R中的if语句与else配合主要有3种结构 单个if语句 if cond expr 其它语句 即当括弧中的cond条件为TRUE时 则执行表达式expr 否则跳过后执行其后的语
  • 复习git的使用

    文章目录 复习git的使用 基础 提交文件 查看 回退 撤销修改 分支 创建 切换 tag 其他命令 HEAD 指针 的理解 复习git的使用 最近公司的老旧项目要由svn转到git git 命令大都忘记了 这里复习总结一下 基础 查看本地
  • unity虚拟相机cinemachine 之ScriptingExample源码解读轻松理解其作用

    我从demo里面找到了脚本的源码 运行的效果 是5秒切换到这个cube立方体 又5秒切换到另外一个 cylinder public class ScriptingExample MonoBehaviour CinemachineVirtua