在使用大地图的项目中,通常需要摄像机跟随玩家移动,而且需要根据地图尺寸限制摄像机的边界
借助 Cinemachine 及其扩展组件 CinemachineConfiner 可以很方便的实现该功能,但这次遇见一个问题:运行时,当摄像机碰到设置正确的边界时,位置发生偏移,且不再跟随玩家移动,特此记录,谨防老年痴呆
打开 Window > Package Manager
Packages 选择 Unity Registry,搜索 Cinemachine 关键字后选择并安装即可
在 Hierarchy 面板中新建 Cinemachine > 2D Camera
拖拽玩家对象到 Cinemachine 的 Follow 中
在 Add Extension 中选择 CinemachineConfiner,会自动添加该组件

在 Hierarchy 创建 PolygonCollider2D 对象
拖拽边界对象到 CinemachineConfiner 的 bounding Shape 2D 中

根据地图尺寸动态设置 PolygonCollider2D 的角点位置
List points = new List();
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();
其中四个角点的顺序没有要求,只要能闭合形成矩形就可以,这里依次是左下 > 右下 > 右上 > 左上
运行后,当摄像机碰到边界时,位置发生偏移,且不再跟随玩家移动,但通过编辑器可以看到,边界的设置是正确的
经过一番尝试后,发现是因为在创建 PolygonCollider2D 后,只将其更改为 4 个角点,并没有改变尺寸,也就是初始尺寸小于摄像机尺寸

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

运行时效果

❝
更多手记,请扫码领取
❞
上一篇:区区用一个成语来表示是什么成语
下一篇:《你好,旧时光》的经典语句