大家好,又见面了,我是你们的朋友全栈君。
摘要:相机是Unity世界的眼睛,一个智能相机更是能帮咱们节省大把的时间和精力。Cinemachine现在已经大量应用到各种项目中,如果你还没有用过Cinemachine,墙裂建议你来体验一下。
你好,我是跟着大智学Unity的萌新,我叫小新,这是我本周的学习总结报告哦。
Cinemachine入门还是很容易的,5分钟足矣,但是深入去研究里面也有很多门道。
Cinemachine是Unity官方开发的一个免费的插件。目前Cinemachine最新版为2.5,支持Unity 2017.1及以上版本。
从Unity 2018.1开始,Cinemachine可以从Package Manager安装。之前的Unity版本可以从Asset Store中下载安装。
安装好Cinemachine之后,菜单栏会有一个新的菜单项叫:Cinemachine。
Cinemachine没有外部依赖包,安装后就可以使用。Cinemachine还可以和Post Processing Stack(场景后处理工具)一起使用
如果你从Asset Store安装过Cinemachine,现在想从Package manager中升级到最新版本。那需要注意以下步骤: 1、用Unity2018.1或之后的版本打开工程。 2、新建一个空场景(防止升级时场景中脚本引用丢失)。 3、在Project窗口中删除Cinemachine文件夹以及相关资产(如CinemachinePostProcessing相关资产)。 4、在Package Manager中安装Cinemachine包。
使用Cinemachine时需要用一种新的方式来思考相机:你可能之前研究的都是如何通过脚本来更好的控制相机,但是在Cinemachine中,你需做的是各种相机的不同用途,快速创建出想要的相机然后调他们的参数就可以了。
从菜单栏Cinemachine > Create Virutal Camera创建虚拟相机。
Cinemachine能控制大量相机,但是它并不创建新的相机,它通过控制Unity相机来实现多机位的效果。如何实现的呢?在Cinemachine中有一个虚拟相机的概念。虚拟相机是相机的一些设置,用于控制Unity相机的移动、旋转以及相关设置。
每个虚拟相机是一个单独的物体,独立运行,也和场景中的相机没有直接关系。例如,你的场景可能长这样:
虚拟相机有什么功能呢?
Cinemachine系统鼓励你创建多个虚拟相机。虚拟相机有很好的性能,不用过多担心会出现性能问题。如果你的场景对性能很敏感,可以禁用当前使用的虚拟相机以外的所有的虚拟相机,这样能达到极致性能。
虚拟相机的一个最佳实践是:一个镜头使用一个虚拟相机。例如:
同一时间仅有一个虚拟相机控制Unity相机,这个虚拟相机被称为活动虚拟相机(live virtual camera)。例外情况是从一个虚拟相机混合到另外一个虚拟相机的时候,混合阶段两个虚拟相机都是活动状态。
通常这一步不需要你手动添加,因为在第一步创建Virtual Camera时会自动给Unity相机添加Cinemachine Brain组件。
CinemachineBrain是挂在Unity相机上的一个组件。这个组件会跟踪场景中所有的活动虚拟相机。你可以通过激活/禁用虚拟相机物体来指定下一个活动虚拟相机。
Cinemachine Brain在运行时可以响应各种事件,这样可以通过逻辑动态控制相机。因为在游戏中,很多动作是不可预测的。
使用VirtualCamera组件中的Body属性来设置相机如何移动。使用Aim属性来设置相机如何旋转。
虚拟相机有两个跟踪目标:
Cinemachine中包含了各种用于相机控制和瞄准的算法。每个算法提供了一种特定的方式,你可以通过设置算法的属性来满足你的特殊需求。你也可以通过继承CinemachineComponent来实现自定义的移动和瞄准的行为。
Body属性提供了下列算法来移动虚拟相机:
Aim属性提供了下列算法来旋转相机对准Look At的目标:
上面第3步提到的Framing Transposer、Composer和Group Composer算法定义了镜头的几个特殊区域,可以用于镜头构图。
组件中的Game Window Guides勾选后,可以在Game窗口可视化的查看/编辑构图区域。最外圈是no pass zone,也就是目标从来不会到的位置。中间的黄色小方块代表了target的位置。
通过拖拽每个区域的边缘或者调整Inspector上的数值来调整这些区域。调整这些区域可以得到多种多样的相机行为。比如使用更大的damping值模拟笨重的相机;增加dead zone和soft zone来创建一个对目标运动不敏感的相机。
现实世界的摄像机通常比较笨重,由摄影师手持或者绑在车辆上。使用Noise属性可以模拟这些效果。例如,你可以给相机添加晃动来跟随一个向前跑的角色以获得更好的沉浸感。
每帧更新后,Cinemachine给相机单独添加晃动。这些晃动不会影响相机后续的位置和镜头。这样可以保证虚拟相机运行结果的一致性。
小新:“上面就是配置一个Cinemachine虚拟相机的基本流程,经过这些步骤之后,就有了一个初步能用的虚拟相机了。动动手试试调节一下这些属性,看看有什么不同的结果。后面咱们继续一起来探索这些属性的详细信息。”
【扩展学习】在洪流学堂公众号回复
timeline
可以下载Timeline&Cinemachine系列教程全文带目录PDF哦
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140408.html原文链接:https://javaforall.cn