Notifications
Article
Cinemachine在2D游戏中的开发小技巧
Published a year ago
1.2 K
0
本文将介绍一些使用Cinemachine开发小技巧,帮助你加速2D游戏的开发,了解更多关于Cinemachine Virtual Cameras和Confiners的信息以及其在2D游戏中的运用。

获取Cinemachine

如果你使用Unity 2018.1.0b7以上的版本,可以从Unity的资源包管理器Package Manager中获取Cinemachine。
点击菜单Window > Package Manager > All ,然后选择Cinemachine即可。

为2D创建摄像机

使用Cinemachine,为2D环境创建摄像机系统的过程很简单。下面介绍如何为2D场景创建虚拟摄像机(Virtual Camera)。
  • 点击菜单,选择Cinemachine > Create 2D Camera,创建2D虚拟摄像机。这将会为2D环境创建一个虚拟摄像机。如果这是场景中的首个虚拟摄像机,它还会添加一个Cinemachine Brain组件到主摄像机上。
  • 将玩家从层级窗口拖入Follow属性栏。
  • 确保在LookAt属性栏的目标是空的,如果属性栏不是空的,选中并按下Backspace或Delete来移除引用。
  • 根据需求调整Orthographic Size和Body设置。
在2D和3D不同环境虚拟相机之间,我们使用了Framing Transposer(构图转换器)。Framing Transposer会跟踪摄像机X-Y平面上的目标,阻止摄像机旋转。为了让Framing Transposer正常工作,我们需要确保虚拟摄像机的“LookAt”属性栏为空。
请注意:2D游戏使用Orthographic View(正交视图),在首次创建虚拟摄像机时,你需要修改场景中Cinemachine Brain Camera上的投影为Orthographic。
请记住重要的一点:使用Cinemachine,不要依赖一个摄像机来完成所有任务。正确的做法是在场景中放置多个虚拟摄像机,使用Cinemachine Brain将它们混合起来。
例如:当玩家血量过低,进入某个特定区域的时候,或是其它需要修改摄像机取景或后期处理效果的的场景。你可以根据想要的视觉效果调整Cinemachine Brain上的混合设置。
下面的视频将告诉你,如何在运行模式调整虚拟摄像机。
小技巧:你可以在运行模式下调整摄像机设置,当你在虚拟摄像机上勾选“Save During Play”时,调整后的内容即使是在运行模式下也会被保存下来。

限制摄像机

我们可以使用边界框把虚拟摄像机限制在特定区域中。此功能在虚拟摄像机的扩展菜单Extensions中找到。
下面是创建这个效果的步骤。
  • 为关卡设置边界框。这将用来限制关卡。
创建一个空游戏对象,并向其添加CompositeCollider2D,将CompositeCollider2D的Geometry Type设为Polygons;设置该对象上的Rigidbody为Static。
向该对象添加BoxCollider2D,调整BoxCollider2D,使之适应关卡;把BoxCollider2D设为”Used by Composite”。
  • 添加Confiner Extension到虚拟摄像机上。
  • 拖拽我们创建好的边界框拖到Bounding Shape 2D Box属性栏上。
  • 是否需要把摄像机限定为屏幕边界,可以通过“Confine Screen Edges”复选框调整。
  • 最后,我们可以决定是否要让Confiner有减震效果。这会使摄像机与限制碰撞体的边界平滑地重叠。如果你不想要这个效果,设置Damping Time为0即可。
效果结果如下所示:
小技巧:当使用”Confine Screen Edges”时,边界框要大于虚拟摄像机的正交尺寸。如果边界框小于屏幕,限制器在该区域不会正常工作。
示例视频:

Group Camera

我们可以在2D中使用Cinemachine的另一个重要的功能是Group Camera。它允许我们为摄像机创建包含多个目标的群组 。
如果你想通过过场动画来展示重要内容,并在每个画面中保留多个对象,或者想要在2D中创建本地多人游戏时,Group Camera会非常实用。
在Cinemachine中,我们可以通过以下方式执行此操作:
  • 新创建一个2D Virtual Camera。
  • 在场景中新创建建一个游戏对象。
  • 点击菜单,选择Add Component > Cinemachine > Cinemachine Target Group。
  • 向Target Group添加需要关注的游戏对象。
  • 在检视窗口中,将目标群组拖入虚拟摄像机的”Follow Target”属性中。
  • 调整Orthographic Size的最小值和最大值,用摄像机术语来说,这样可以定义摄像机的“焦距”。
  • 确定Group Framing的类型。在摄像机构图时,”Horizontal”类型只考虑水平方向的范围,而”Vertical”则只考虑垂直方向的范围,“Horizontal and Vertical”会考虑以上二种范围。
Target Group是一个Cinemachine的组件,允许你在一个虚拟摄像机上查看多个目标。它会调整摄像机的尺寸,确保目标根据权重有相应的可见性。例如:如果所有目标的权重为1,目标群组会确保所有对象都可见。
下图是个关注玩家和箱子的Group Camera示例。
小技巧:在Group Virtual Camera被激活时,添加或移除群组对象,可以将对象的权重在一段时间内逐渐调整为0,或是从0逐渐调整到所需的权重。这样会使摄像机平滑地重新构图。

使用Impulse的摄像机抖动

我们在Cinemachine V2.2中,添加了一个新的Impulse Extension。此扩展允许用户不需要代码就可以创建摄像机抖动效果。Impulse Extension可以作为扩展添加到虚拟摄像机上。
下面介绍如何将它添加到场景中:
  • 使用Cinemachine菜单选项创建2D Virtual Camera,设置它跟随我们的目标。
  • 点击Add Extension > Cinemachine Impulse Listener。
  • 在Impulse Listener上,勾选名为‘Use 2D Distance’的选项。
  • Channel Mask让你能对想监听的冲击进行分类。本示例中我们将使用默认通道。
  • 选取冲击来源的游戏对象,本示例中我们使用一个弹球。每次它碰到地面时,它会在默认通道上广播一个冲击信号,Impulse Listener会监听到它。
  • 点击Add Component,搜索‘Cinemachine Collision Impulse Source’。
  • 在‘Signal Shape’标题下,我们将为Raw Signal变量选择一个信号。它是一个‘NoiseSettings’配置文件。我们可以使用默认配置文件,也可以创建自己的配置文件来使用。
点击齿轮图标,选择”New Noise Setting”,来新建”New Noise Setting”配置文件。将其保存在项目中。
我们可以选择让噪音影响Position和Rotation,也可以只影响二者之一。因为它是用在2D游戏上,我们会影响到X和Y的位置,以及Z轴的旋转。好的噪音配置文件得到的结果是不可预测的。有了噪音结果,只需要复制一些自然的随机数即可。我们可以通过带有不同细节的多个图层来实现。
  • 我们也可以给应用噪音配置文件的频率和振幅添加一个增益。
  • 在Spatial Range标题下,我们将调整Dissipation Distance,它会决定不再感知冲击的范围。目前我们将这个属性设为25。
我们还可以调整Dissipation Mode,从而修改衰减类型。我们还能调整其它的一些设置,你可以自行进行尝试。
效果如下图示:

小结

通过本文我们了解,通过资源包管理器获取Cinemachine,创建2D Virtual Camera。将虚拟摄像机限定在一个2D空间,使用虚拟摄像机的扩展,使之跟踪多个目标设置Impulse Module来添加摄像机抖动效果。
我们希望你能希望这篇文章,并且在2D中使用Cinemachine。更多Cinemachine最新资讯,尽在Unity官方中文论坛(UnityChina.cn) !
Unity China
710
Comments