用于 2D 的 Cinemachine:提示和技巧

ETHAN BRUINS / UNITY TECHNOLOGIES Contributor
Jul 17, 2018|8 Min
用于 2D 的 Cinemachine:提示和技巧
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

您是否已经为您的 2D 游戏开发摄像系统多年,并希望有类似 Cinemachine 的 2D 软件?虽然没有多少人知道,但是已经存在了!这篇博文为您提供了充分利用 Cinemachine 的一些技巧,以及该工具如何显著地促进和加快您的 2D 游戏的开发。继续阅读以了解有关 Cinemachine 虚拟相机、Confiners 等的更多信息,特别是用于 2D 游戏的内容。

获取 Cinemachine

如果您使用的版本高于 2018.1.0b7,您可以从 Unity 中的包管理器中获取 Cinemachine。

可以通过前往 窗口 > 包管理器 > 全部 ,然后选择 Cinemachine 来完成。

图像
从 PackageManager 导入
创建 2D 相机

使用 Cinemachine,可以相对轻松地开始为 2D 环境创建摄像系统。让我们看一下如何为 2D 创建虚拟相机。

1.通过转到菜单栏并选择 Cinemachine > 创建 2D 相机来创建 2D 虚拟相机。这将创建一个用于 2D 环境的虚拟相机。如果它是场景中的第一个虚拟相机,它还会向主相机添加一个 Cinemachine Brain 组件。

图像

2.将您的播放器从层次结构拖到跟随目标。

3.确保 LookAt 目标中没有任何内容,如果那里有内容,请选择它并按退格键或删除键以删除引用。

4.调整正交尺寸和主体设置以满足您的需要。

您会注意到,2D 虚拟摄像机和 3D 虚拟摄像机之间最主要的是我们使用了框架转置器。这种特殊的转置器将跟随相机 XY 平面上的目标,并停止相机旋转。为了使取景转置器正常工作,我们需要确保虚拟相机的“LookAt 目标”为空。另外要注意的是,2D 游戏使用正交视图,首次创建虚拟相机时,您需要在场景的 Cinemachine Brain 相机上将投影更改为正交。

图像

需要记住的一件重要事情是,使用 Cinemachine 时,你不应该尝试让一台摄像机完成所有工作。相反,您可以在场景周围使用不同的“虚拟相机”,并使用 Cinemachine Brain 在它们之间进行混合。如果玩家健康状况不佳、玩家进入某个区域或您能想象到的任何其他需要改变摄像机取景或后期处理的场景,就会发生这种混合。您可以根据想要的视觉效果调整 Cinemachine Brain 上的混合设置。

观看下面的视频,了解如何在播放模式下调整虚拟相机。

提示:您可以在游戏模式下调整相机设置,只要在虚拟相机上选中“游戏期间保存”,这些设置就会保存
限制相机

我们可以使用 Cinemachine 做的另一件很酷的事情是使用边界框将虚拟相机限制在某个区域内。该功能在虚拟相机的扩展部分可用。以下是创建此效果的步骤。

1.为我们的级别设置一个边界框。这将用于限制级别。这是通过以下方式完成的:

  • 创建一个空的“GameObject”。
  • 向 GameObject 添加“CompositeCollider2D”。
  • 将“CompositeCollider2D”的几何类型设置为多边形。
  • 将游戏对象 (GameObject) 上的“刚体 (Rigidbody)”设置为静态 (Static)。
  • 向 GameObject 添加“BoxCollider2D”。
  • 调整“BoxCollider2D”来适合你的级别。
  • 将“BoxCollider2D”设置为“由 Composite 使用”。
图像

2.将 Confiner 扩展添加到您的虚拟相机。

3.将我们之前创建的边界框拖到边界形状 2D 框中。

4.决定是否要将相机限制在屏幕边缘,可以使用“限制屏幕边缘”复选框进行调整。

5.最后,我们可以决定是否要让 Confiner 具有阻尼。这将允许相机平滑地与限制碰撞器的边缘重叠。如果您不想要这种效果 - 请将阻尼时间设置为 0。

请参阅下面的结果:

提示:使用“限制屏幕边缘”复选框时,边界区域需要大于虚拟相机的正交尺寸。如果边界框小于屏幕,则限制器将无法在该区域正常运行。

视频示例:

集体摄影机

我们可以在 2D 中使用的 Cinemachine 的另一个很酷的功能是组相机 (Group Camera)。该相机允许我们创建一个供我们的相机观察的目标群体。如果您正在制作过场动画并想要展示一些重要的东西,或者想要在每一帧中保留多个对象,或者想要创建 2D 本地多人游戏,那么组相机会很有用。

在 Cinemachine 中,我们可以按照以下方式进行操作:

1.创建一个新的 2D 虚拟相机

2.在场景中创建一个新的 GameObject

图像

3.添加组件 > Cinemachine > ‘Cinemachine 目标组’

4.将您想要关注的游戏对象添加到目标组

5.将目标组拖到检查器中的虚拟摄像机“跟随目标”属性。

6.调整最小和最大正交尺寸(在相机术语中,定义相机的“变焦”)到您喜欢的设置

7.确定您想要的群组框架类型。“水平”在构图时仅考虑水平框架尺寸。“垂直”在构建框架时仅考虑垂直框架尺寸。“水平和垂直”类型同时考虑了两个维度。

“目标组”是 Cinemachine 组件,允许您在同一个虚拟相机上查看多个目标。它会根据重量调整相机的尺寸,以确保目标可见。例如,如果所有目标的权重均为 1,则目标组将确保所有目标均可见。

这是聚焦于玩家和胸部的群组摄像机的示例。

图像
提示:在群组虚拟摄像机处于活动状态时添加或删除群组成员时,将成员的权重设置为零或从零开始。这将允许相机顺利地重新构图。
使用脉冲进行相机抖动

在 Cinemachine V2.2 中,我们添加了新的 Impulse Extension。此扩展允许用户创建相机抖动效果,而无需编写任何代码。可以将 Impulse Extension 添加为虚拟相机的扩展。我将引导您了解如何将其添加到您的场景中:

  • 使用 Cinemachine 菜单选项创建一个 2D 虚拟相机,并将其设置为跟随我们的目标。
  • 单击添加扩展 > Cinemachine Impulse Listener。
  • 在 Impulse Listener 上,确保选中“使用 2D 距离”复选框。
  • 通道掩码允许您过滤想要听到的脉冲。在此示例中,我们将使用默认频道。
  • 选择要发送脉冲的游戏对象,在这个例子中,我们将使用弹跳的球。每次它撞击地板时,它都会在默认频道上广播一个脉冲信号,我们的脉冲监听器将会接收该信号。
  • 单击添加组件并搜索“Cinemachine Collision Impulse Source”。
  • 在“信号形状”标题下,我们将为原始信号变量选择一个信号。这是一个“NoiseSettings”配置文件。我们可以使用默认的,也可以创建自己的。
  • 单击齿轮图标创建一个新的“噪音设置”配置文件,然后选择“新噪音设置”。将其保存到您的项目中。
  • 我们可以选择让噪声影响位置和旋转,或者只影响其中之一。因为它是 2D 游戏,所以我们会影响 X 和 Y 位置以及 Z 旋转。良好的噪声曲线是不可预测的。对于噪音,我们唯一想做的就是复制一些大自然的随机性。我们可以通过设置具有不同细节的多个图层来实现这一点。
  • 如果我们愿意,我们可以为噪声配置文件所应用的频率和幅度增加增益。
  • 在空间范围标题下,我们将调整消散距离。这决定了在什么范围内我们不再感受到冲动。目前将其设置为 25。

如果我们愿意,我们可以调整耗散模式来改变衰减类型。我们还可以调整其他设置,但目前,这就是我们所需要的。

您可以看到以下结果:

ImageImage

总而言之,我们现在知道如何:

  • 使用包管理器获取 Cinemachine
  • 创建 2D 虚拟相机
  • 将虚拟相机限制在二维空间内
  • 组成虚拟相机来跟踪多个目标
  • 设置脉冲模块以添加相机抖动

我希望你喜欢这篇博文,并且现在可以在下一个 2D 项目中使用 Cinemachine!您是否想了解 Cinemachine 的最新动态?加入我们 论坛的讨论。