Unity | Cinemachine 2D 设置边界及错误记录

1 背景介绍

在使用大地图的项目中,通常需要摄像机跟随玩家移动,而且需要根据地图尺寸限制摄像机的边界

借助 Cinemachine 及其扩展组件 CinemachineConfiner 可以很方便的实现该功能,但这次遇见一个问题:运行时,当摄像机碰到设置正确的边界时,位置发生偏移,且不再跟随玩家移动,特此记录,谨防老年痴呆

2 摄像机跟随及边界设置

2.1 安装 Cinemachine

打开 Window > Package Manager

Packages 选择 Unity Registry,搜索 Cinemachine 关键字后选择并安装即可

2.2 使用 Cinemachine

  1. 在 Hierarchy 面板中新建 Cinemachine > 2D Camera

  2. 拖拽玩家对象到 Cinemachine 的 Follow 中

  3. 在 Add Extension 中选择 CinemachineConfiner,会自动添加该组件

  4. 在 Hierarchy 创建 PolygonCollider2D 对象

  5. 拖拽边界对象到 CinemachineConfiner 的 bounding Shape 2D 中

  6. 根据地图尺寸动态设置 PolygonCollider2D 的角点位置

List<Vector2> points = new List<Vector2>();
points.Add(new Vector2(leftBottom.x, leftBottom.y));
points.Add(new Vector2(rightTop.x, leftBottom.y));
points.Add(new Vector2(rightTop.x, rightTop.y));
points.Add(new Vector2(leftBottom.x, rightTop.y));
this.polygonCollider2D.points = points.ToArray();

其中四个角点的顺序没有要求,只要能闭合形成矩形就可以,这里依次是左下 > 右下 > 右上 > 左上

3 错误表现及解决方案

运行后,当摄像机碰到边界时,位置发生偏移,且不再跟随玩家移动,但通过编辑器可以看到,边界的设置是正确的

经过一番尝试后,发现是因为在创建 PolygonCollider2D 后,只将其更改为 4 个角点,并没有改变尺寸,也就是初始尺寸小于摄像机尺寸

当把 PolygonCollider2D 的初始尺寸设置为大于等于摄像机尺寸时,就可以正常触发边界限制

运行时效果

更多手记,请扫码领取

猜你喜欢

转载自blog.csdn.net/u010799737/article/details/127980282