【Unity小技巧】Cinemachine 实现视野跟随

前言

Cinemachine 是 Unity 的一个和摄像机相关的开箱即用包。
完全不需要写代码,只需要在可视化的界面进行简单的配置即可实现视野跟随的功能。

安装 Cinemachine

在 Unity 的顶部菜单栏中,选择 Windows(窗口)然后点击 Package Manager(包管理)。

Package Manager

接着在弹出的包管理窗口中,点击左上角选择 Unity Registry(如果不选中这个是看不到 Cinemachine 的)。然后等一会,Unity 需要拉取包信息,大约十秒左右就会显示出所有的包列表了,等列表加载出来以后,找到 Cinemachine 点击,右侧的窗口会变成包信息,找到右下角的 install 按钮点击即可安装。

Cinemachine

等待安装完成以后,关掉包管理工具,可以看到顶部菜单栏的 Component 里多出了 Cinemachine 的选项。

2D Camera 去哪了?

然鹅,网上的教程都会告诉你要创建一个 2D Camera,可是……这个菜单里并没有这个选项。

2D Camera 去哪了?

为了解决这个问题,我翻了网上所有教程,结果没一个是说明这个问题的。
难道说……只有我安装的 Cinemachine 有问题?

最开始以为是因为新版本更新导致功能变化,尝试了菜单中的 Virtual Camera(虚拟相机),结果发现并不能跟随视野。然后又去翻了一遍搜索引擎的结果,仍然没有解决,最后返回包管理工具,意外的注意到一个不起眼的地方……

目前 Cinemachine 最新版是 2.7.5 版本,网上的一些教程基本上都是 N 年前的 2.2.x 版本,升级到 2.7.x 之后,界面已经发生了一些改变,在包的描述信息中间有一行不起眼的英文:

描述信息

点击 More 查看完整的信息:

More

这里有一段英文:

New starting from 2.7.1: Are you looking for the Cinemachine menu? It has moved to the GameObject menu.

意思是说:从 2.7.1 版本开始,Cinemachine 已经移动到了 GameObject 菜单底下。

原来新版本改变了菜单的位置,怪不得找不到!
返回 unity 场景,选择顶部菜单栏 GameObject 菜单,看到下拉列表里有 Cinemachine,点开就可以发现 2D Camera 了。

GameObject菜单

实现视野跟随

点击创建 2D Camera,可以看到场景多出来这么一个东西:

CM vcam1

并且 Main Camera 也自动添加了一个组件:

Main Camera

主摄像机不用管,我们只需要关注 CM vcam1,在右侧面板中,找到 follow 变量,把场景中的角色拖到变量里:

follow

这样就 OK 了,点击测试!

实现视野跟随

可以看到,视野可以跟随主角移动了。

配置最大视野范围

当角色移动到场景边界时,就会看到场景的边缘:

移动到边缘

但是我们希望它能限制在一个范围内,而不是走到角落时可以看到黑边。

在场景中任意一个物体上创建 Polygon Collision2D(多边形碰撞器),然后把 is trigger 勾选上,此处我选择在关卡的根节点添加一个多边形碰撞器:

多边形碰撞器

接着再返回场景,选择 CM vcam1,在右侧的界面中,点击 Add Extension

Add Extension

在弹出的下拉菜单中,选择 Cinemachine confinder

Cinemachine confinder

然后把添加了多边形碰撞器的根节点拖进 Bounding Shape 2D

根节点

这样视野就会限制在多边形的范围里:

视野范围

然后进入游戏测试:

测试视野范围

当角色走出多边形的范围时,摄像机就不再跟随了。

抖动问题修复

在没有配置的时候,摄像机的跟随范围很大,不仅是水平方向,竖直方向也会进行跟随,如下:

抖动问题

作为一个 2D 平台跳跃游戏,上下抖动会产生眩晕的感觉。

这是因为设置的多边形与摄像机的边界存在空白导致的。

摄像机边界

调整多边形的范围让它与白色边重合即可解决此问题。
除此之外,还可以调节摄像机的边缘(即上图白边部分)。

点击 CM vcam1,再点击 Lens 展开选项:

Lens

只要修改 Ortho Size 的值即可调整摄像机的大小。

跟随范围

可以设置跟随范围让角色一直保持在中间或者超过某个区域才开始跟随。

选择 Body 然后编辑 screen Xscreen Y 的值即可:

跟随范围

可以看到上图中有一个区域,当角色走出这个区域的时候摄像机才会开始跟随。

区域

在区域中移动时,摄像机不会跟随,当走到区域边缘时摄像机才开始跟随,直到走出多边形的最大区域才停止。
(可以看到上图中角色脸上有一个点,当那个点碰到边缘的时候便会开始跟随)

如果要让角色一直处于视野中心的位置,只要将上面两个值设置为 0 即可。

后言

本文仅做简单的介绍,因为本人也还没有详细了解过这个插件的所有功能(它实在太大了!)。
根据我搜索得到的结果,这个插件可以实现包括特写等等很多效果(主要用在 3D 游戏)。
以及在 3D 游戏中,切换不同的画面以实现动画效果。

因为我现在做的是 2D 游戏,暂时还用不到那么多功能,只要视野跟随就足够了,等需要用到的时候再继续深入学习。

文章作者: 火烧兔子
文章链接: http://huotuyouxi.com/2021/08/24/unity-tips-005/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 火兔游戏工作室