Unity2D设置摄像机跟随和边界范围

        在制作2D游戏时时常会遇到需要设置摄像机跟随玩家的情况,一般情况下有三种处理比较简单的处理方法,第一种也是简单粗暴的方法,把摄像机直接作为玩家的子物体就可以了,当然这样做的后果就是不利于后续扩展更多的功能,比如切换玩家控制的角色时,你还得想把这个摄像机的父物体改为新控制的角色的子物体,在一些视觉效果比如摄像机移动扫过一片区域时,这种设置方式就会造成极大的限制。

        第二种就是写一个脚本不断改变摄像机的位置让其位置始终和玩家保持一致,当要切换角色时改变摄像机要追踪的GameOject即可,视野移动时暂时关闭它的追踪或者设置追踪一个空物体(看起来就像是视野飞过去了),后续扩展比上一种强很多。

        但是上述两种方式都不好做出摄像机视野的边界效果。

        第三种方式就是使用Unity自带的插件,能够解决这种问题,导入插件的名称如图:

        导入这个插件后,在组件选项中,右键添加Create 2D Camera,就会把场景中摄像机自动添加组件并且增加一个CM vacm1的游戏对象,这个对象可以用来设置这个跟随效果的摄像机的各种效果。

        如果要使摄像机跟随某个游戏对象,只需要把场景中的物体拖拽到红线内的部分(需要跟随的对象)就可以了,如果要设置边界,右键CinemachineVirtualCamera组件的最底下的选项增添一个Cinemachine Confiner 2D摄像机的碰撞组件,设置摄像机的边界,随意设置一个新的空物体,添加多边形碰撞,然后将这个物体拖入绿线部分,然后你就会发现摄像机只能在碰撞体的范围内运动,然后根据自己的需要来设置边界就可以了实现需求了,这个插件还能实现关于摄像机抖动的很多效果,能够减少自己写代码的麻烦(但问题在这个插件太久未更新,后续可能不再支持无法使用)。

        然而我在使用了这个摄像机后发现了一个问题,此时如果已有UI是绑定在玩家身上的并且渲染模式是覆盖或者摄像机,那么会导致玩家身上的UI开始飘着跟随,就像下图:

        想要解决这个问题,一是让让摄像机死跟随玩家,但是如果碰到边界就无法解决,这种情况下,只能通过把渲染模式换成世界空间模式,并且写代码让UI控件实时跟着玩家才行,因此第三种方法相比第二种也并不是全占优势,当然如果你有更好的建议也可以在评论区提出,让我们共同进步。

来看看最后的修正效果:

猜你喜欢

转载自blog.csdn.net/WEIWEI6661012/article/details/130352748
今日推荐