Unity Cinemachine 和时间线教程

Cinemachine 是 Unity 的软件包,可为开发人员提供专业的摄像机控制并增强创建电影过场动画的能力。

本教程将涵盖以下主题:

  • 电影机安装
  • 第三人称视角设置
  • 时间轴过场动画创建

电影机安装

要安装 Cinemachine,请按照以下步骤操作:

  • 在 Unity 中转到窗口 -> 包管理器

Unity 包管理器菜单

  • 将软件包更改为“Unity注册表”

Unity 包管理器注册表

  • 从列表中选择 "Cinemachine",然后单击 "Install"

Cinemachine 现在可以使用了。

第三人称视角设置

下面我将展示如何使用 Cinemachine 的虚拟摄像机设置第三人称摄像机。

虚拟相机是 Unity 相机的轻量级版本,它不会自行渲染,而仅用作主相机的参考点。

作为本教程的示例,我将使用 第三人称控制器,除非不设置相机碰撞,也不在玩家层次结构内移动相机:

Sharp Coder 视频播放器

正如您所看到的,玩家正在移动,但相机没有跟随。

使用 Cinemachine 设置第三人称摄像机非常简单:

  • 转到 GameObject -> Cinemachine -> Virtual Camera 创建一个新的虚拟相机

Cinemachine 创建虚拟摄像机

  • 为虚拟相机命名 "TPS Camera"
  • 选择 TPS Camera 并在 CinemachineVirtualCamera 中分配 Follow 变量(在我的例子中,它将是 "CameraParent" 对象,它位于播放器层次结构内部并表示垂直外观旋转)
  • 将主体值设置为 "3rd Person Follow"
  • 将“忽略标签”设置为 "Player",并选择播放器根对象并将其标签设置为 "Player"(如果播放器层次结构中有任何子碰撞器,请确保将其标签也更改为 "Player")
  • 调整 CinemachineVirtualCamera 中的其他值,例如摄像机距离、摄像机侧面、肩部偏移和阻尼,直到您对结果感到满意为止。
  • 将 CameraParent 的 Aim 值设置为 "Do nothing"

CinemachineVirtualCamera 组件值

相机现在应该跟随玩家:

Sharp Coder 视频播放器

时间轴过场动画创建

在这里,我将展示如何使用 Unity's 时间轴编写过场动画。

时间轴是一个内置编辑器,使开发人员能够通过设置摄像机动画以及使用现有动画(例如角色行走)以及按顺序排列的事件和信号来编写过场动画。

Cinemachine 软件包向时间轴编辑器添加了一些额外的选项,例如在虚拟摄像机之间切换的功能。

要创建过场动画,请按照以下步骤操作:

  • 创建一个新的 GameObject 并调用它 "TimelineManager"
  • 通过转到“窗口”->“排序”->“时间轴”打开“时间轴”窗口

Unity 窗口排序时间轴菜单

  • 选择 "TimelineManager" 对象,然后在时间轴窗口中,您应该会看到一个用于创建 Director 组件和时间轴资源的选项,单击它。

Cinemachine 创建 Director 组件和时间轴资源

  • 创建Director组件和Timeline资源后,您应该看到空的Timeline窗口(确保选择TimelineManager对象以便能够对其进行编辑)。

Cinemachine 时间线窗口

  • 现在,我们可以通过右键单击窗口开始将组件添加到时间线。

时间轴组件创建

如您所见,时间轴窗口有各种选项:

  • 轨道组 - 这是一个可以包含时间线操作的组,对于组织很有用。
  • 激活轨迹 - 这定义了仅在设定的时间范围内应处于活动状态的对象。
  • 动画轨道 - 这将在设定的时间范围内播放特定的动画。
  • 音轨 - 这将在设定的时间范围内播放特定的音频。
  • 控制轨道 - 剪辑控制游戏对象上与时间相关的元素的轨道。
  • Signal Track - 这允许在特定时间对特定游戏对象执行各种操作(例如,激活玩家移动脚本或在时间线到达特定帧时调用特定函数等)
  • 可播放轨道 - 剪辑可自定义播放的轨道。
  • Cinemachine Track - 这允许在多个 cinemachine 虚拟摄像机之间进行混合。

出于本教程的目的,我将仅使用 Animation TrackSignal Track

设置

  • 创建另一个虚拟相机并将其命名为 "CutsceneCamera" 并将其 "Priority" 值设置为高于 "TPS Camera" 的级别(例如 11)
  • 在项目视图中右键单击 -> 创建 -> 信号并命名 "DisablePlayer"

Unity创建时间线信号

  • 复制 "DisablePlayer" 信号并将其重命名为 "EnablePlayer"

Unity 时间轴信号资源

  • 在场景中创建一个新的GameObject并为其命名 "SignalReceiver"
  • SignalReceiver 组件附加到 "SignalReceiver" 对象
  • 单击 "Add Reaction" 2 次
  • 将"DisablePlayer"分配给第一个反应,将"EnablePlayer"分配给第二个反应

Unity时间线信号添加反应

"DisablePlayer" 将激活过场动画相机,停用玩家相机和玩家控制脚本,并将放置在时间线的开头。

"EnablePlayer" 将停用过场动画相机,激活玩家相机和玩家控制脚本,并将放置在时间线的末尾。

  • 单击 (+) 添加反应槽,然后分配需要激活/停用其脚本或组件的对象。

提示:要创建相反的信号,您只需设置 "DisablePlayer" 的反应,然后单击齿轮图标 -> 复制,将信号更改为 "EnablePlayer" 并反转复选框。

Unity重复信号

Unity 时间线信号反应设置

  • 选择 "TimelineManager" 对象,然后在时间轴窗口中通过右键单击 -> Signal Track 添加新信号轨道,然后为其指定 "SignalReceiver" 对象。
  • 将 "DisablePlayer" 信号资源拖放到时间线开头,并将 "EnablePlayer" 拖放到您希望过场动画结束的帧:

Unity 时间线信号预览

这将使玩家控制器脚本和摄像机在开始时停用,然后在时间线到达末尾时重新激活。

最后,我们将创建一个简单的相机动画。

  • 右键单击“时间轴”->“动画轨道”,然后指定 "CutsceneCamera"(如果没有,这将要求将动画器组件添加到对象中)
  • 单击录制按钮

Unity时间轴动画剪辑记录

  • 稍微移动 "CutsceneCamera",应用关键帧,然后将时间轴帧手柄移动到末尾,最后将相机移动到新位置,然后单击“停止录制”。

Unity Cinemachine 过场动画时间轴

让我们按播放键看看结果:

Sharp Coder 视频播放器

过场动画在游戏开始时播放。

推荐文章
如何在 Unity 中在地形上绘制树木
如何将动画导入到 Unity
在 Unity 中为您的环境选择正确的天空盒
保护 Unity 游戏免遭盗版的策略
如何在 Unity 中制作受 FNAF 启发的游戏
讲故事在 Unity 游戏开发中的重要性
如何在 Unity 中为您的游戏选择合适的背景音乐