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源码解读轻松理解其作用 的相关文章

  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity-AR 简介

    Unity AR 简介 现有Unity AR Sdk ARKit 苹果推出的AR开发平台 ARCore Google 推出的增强现实 SDK ARFoundation ARFoundation是ARKit XR插件和ARCore XR插件
  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • 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之获取游戏物体对象或组件的几个方法

    文章目录 前言 通过物体名称获取对象 GameObject Find Transform Find 通过物体标签获取对象 GameObject FindWithTag GameObject FindGameObjectWithTag Gam
  • GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

    1 Goole在今年6月份出的新政策 不在使用safetynet 而使用Play Integrity API 2 项目本身没有使用过safetynet 3 使用了firebase 查阅资料 解决方案如下 implementation pla
  • unity中创建询问弹出窗口

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

    前言 在做一些项目的时候 有些不良甲方在给完项目后会有不给尾款的情况 之前都是加一些水印啥的 感觉不是很方便 第一不美观 第二如果甲方给完尾款后还得重新打包去水印 然后又做过一个本地的时间锁 等到时间 程序直接退出 但是感觉还是不方便 有时
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • Unity打开工程时卡住的问题

    自从Unity升级了一个版本后 Unity打开工程卡住的问题越来越严重了 具体表现为 选择工程后 Unity窗口消失 但进程还在 有时候等个几分钟能出来 有时候等10分钟都不见得能出来 直观感受上看 似乎是Unity加载工程的时候某一步卡了
  • unity3d大型互动照片墙

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

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • 【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学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

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

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文

随机推荐

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

    高德地图开发 二 地图插件加载 一 加载单个插件 二 加载多个插件 有同步 异步等方法 我用得都是异步 图层类型切换 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