Unity中实现高级相机操作——Cinemachine插件

Posted Hello Bug.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中实现高级相机操作——Cinemachine插件相关的知识,希望对你有一定的参考价值。

一:前言

Cinemachine可以快速实现各种相机效果,例如跟随、分镜、推拉式镜头等,配合Timeline可以创建Cinemachine Track实现动画融合


二:执行流程

从PackageManager上可以下载Cinemachine插件,它有以下几种类型的虚拟相机可以创建

Cinemachine在性能上非常高效,因为创建出来的是VirturalCamera,它只是一个数据类只存储数据而不是真实的相机

无论创建哪一种VirturalCamera,都会为Camera上添加一个CinemachineBrain脚本,CinemachineBrain每帧通过VirturalCamera计算真实相机的数据,并同步到真实相机上(添加CinemachineBrain后真实相机的部分参数被锁定,由VirturalCamera托管),之后调整VirturalCamera上的参数去实现相机效果


三:CinemachineBrain

CinemachineBrain是挂在相机对象上去真正修改相机位置的脚本。负责通过VirtualCamera来计算真实相机的数据

——Live Camera:当前正在拍摄的虚拟相机
——Show Debug Text:在Game窗口显示当前拍摄的虚拟相机
——Show Camera Frustun:显示虚拟相机的轨迹
——Update Method:更新方式(Fixed Update、Late Update)


四:Virtual Camera

几乎创建任何类型的虚拟相机都会创建此组件

——Solo:点击后可以在场景中激活此虚拟相机
——Save During Play:运行状态下编辑是否自动保存
——Priority:优先级(与Camera的Depth类似)

——Follow:跟随的物体
——Look At:朝向的物体
——Lens:与相机的相关设置一致(
视野范围,远/近平面等
——Body:跟随相关参数
——Aim:朝向相关参数
——Noise:相机抖动相关参数(选择不同的Noise Profile)


五:Dolly Camera With Track(推轨相机—相机沿着轨道运行)

推轨相机顾名思义,就是电影拍摄中的相机沿着设置好的轨道运行。创建后有两个游戏物体,一个是Virtual Camera,一个是DollyTrack(轨道设置)

——Looped:是否循环(轨道头尾相连)
——Waypoints:路径点(位置和旋转)


推轨相机的Virtual Camera的Body类型选择的是Tracked Dolly

Path:设置的轨道DollyTrack
Path Position:路径点下标,对应DollyTrack的下标


六:Dolly Track With Cart(推轨相机—物体沿着轨道运行)

推轨相机顾名思义,就是电影拍摄中的相机沿着设置好的轨道运行。它与Dolly Camera With Track不同的是创建后有多了一个游戏物体:DollyCart(身上挂载了CinemachineDollyCart脚本,这个脚本实现了此游戏物体沿着轨道移动),其实可以删除掉这个游戏物体,将CinemachineDollyCart脚本挂载到需要沿着轨道移动的对象

——Path:设置的轨道DollyTrack
——Speed:速度


七:Clear Shot(切镜相机)

Clear Shot可以实现物体遮挡后的切镜效果。创建后有一个CM ClearShot(主控制)和Virtual Camera(每个Virtual Camera上都需要挂载Cinemachine Collider组件)

——Default Blend:切镜的融合模式
——Virtual Camera Children:将不同机位的虚拟相机添加到列表中,CinemachineClearShot会计算是否有遮挡并选择最佳拍摄位置的相机


八:FreeLook Camera(自由观察相机)

FreeLook Camera应用于第三人称的控制。创建后有一个CM FreeLook,它拥有Virtual Camera的一些基础设置,FreeLook Camera有上中下三条机位轨道,可以分别调整参数


九:State-Driven Camera(状态驱动相机)

State-Driven Camera可以根据不同的动画切换不同的相机。创建后有一个CM StateDrivenCamera(主控制)和Virtual Camera

——Animated Target:目标对象的Animator
——Default Blend:切换不同的相机的融合模式
——状态设置:选择每个状态对应的虚拟相机
——Virtual Camera Children:将不同机位的虚拟相机添加到列表中,Cinemachine StateDrivenCamera会根据不同的动画状态切换不同的相机


十:Target Group Camera(跟随组相机)

Target Group Camera可以跟随多个物体,并根据物体的距离远近进行相机视野的调整。创建后有两个游戏物体,一个是Virtual Camera,一个是CM TargetGroup(组设置)

组设置:每个目标物体对应的权重


十一:2D Camea(2D游戏相机)

2D Camere可以实现2D游戏中相机参数设置。创建后有一个Virtual Camera,Body模式选择的是Framing Transposer

可以配合Cinemachine Confiner组件限定相机边界

——Confine Mode:类型,2D or 3D
——Bounding Shape2D/Volume:碰撞器(2D必须使用Polygon Colldier 2D)


十二:Blend List Camera

Blend List Camera与State-Driven Camera相似,Blend List Camera是根据设置的时间切换不同的相机。创建后有一个CinemachineBlendListCamera(主控制)和Virtual Camera

——相机设置:设置每个相机持续的时间、混合模式
——Virtual Camera Children:将不同机位的虚拟相机添加到列表中,CinemachineBlendListCamera会根据时间切换不同的相机


十三:Mixing Camera

Mixing Camera可以实现多个相机的混合。创建后有一个CM MixingCamera(主控制)和Virtual Camera,将需要混合的虚拟拖拽到CM MixingCamera下作为子物体

——Child Camera Weights:每个相机的权重

以上是关于Unity中实现高级相机操作——Cinemachine插件的主要内容,如果未能解决你的问题,请参考以下文章

Unity中实现垂直角度的相机在不同分辨率下的适配

[Unity] 在Unity中实现小地图(Minimap)

游戏开发实战教你在Unity中实现笼中窥梦的效果(RenderTexture | 视觉差| 多相机 | 渲染 | shader | 多场景)

游戏开发实战教你在Unity中实现笼中窥梦的效果(RenderTexture | 视觉差| 多相机 | 渲染 | shader | 多场景)

unity中实现物体的拖拽到指定位置的功能

VirtualJoystick与unity5有关