1 背景介绍
在使用大地图的项目中,通常需要摄像机跟随玩家移动,而且需要根据地图尺寸限制摄像机的边界
借助 Cinemachine 及其扩展组件 CinemachineConfiner 可以很方便的实现该功能,但这次遇见一个问题:运行时,当摄像机碰到设置正确的边界时,位置发生偏移,且不再跟随玩家移动,特此记录,谨防老年痴呆
2 摄像机跟随及边界设置
2.1 安装 Cinemachine
打开 Window > Package Manager
Packages 选择 Unity Registry,搜索 Cinemachine 关键字后选择并安装即可
2.2 使用 Cinemachine
-
在 Hierarchy 面板中新建 Cinemachine > 2D Camera
-
拖拽玩家对象到 Cinemachine 的 Follow 中
-
在 Add Extension 中选择 CinemachineConfiner,会自动添加该组件
-
在 Hierarchy 创建 PolygonCollider2D 对象
-
拖拽边界对象到 CinemachineConfiner 的 bounding Shape 2D 中
-
根据地图尺寸动态设置 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 的初始尺寸设置为大于等于摄像机尺寸时,就可以正常触发边界限制
运行时效果
❝更多手记,请扫码领取
❞