Home

Awesome

UnityCameraSystem_CC

介绍

基于Cinemachine的第一/三人称过肩/自由/斜45度/俯视角摄像机系统 本摄像机系统基于Cinemachine的Virtual Camara实现,实现了锁定、旋转、缩放、移动、鼠标显示/隐藏、摄像机位置复位、限制摄像机角度、动态挂载跟随目标、切换视角、遮挡透视等功能,并自带摄像机碰撞,防止穿墙。

软件架构

Unity 2020.3.33f1c2 Cinemachine(插件) Input System(插件)

使用说明

详见文档

参与贡献

月羽衔蝉(B站)

特技

Cinemachine是Unity中一款强大的摄像机插件,可以无需代码实现一些复杂的效果,也支持通过脚本扩展更复杂的效果,上手简单,Unity2017以上版本都可以使用。 与Camera不同的是,虚拟相机不是真正的相机,不挂载Camera组件,只是一些数据,本质上是相机行为的配置文件,来控制真实相机参数,因此必须搭配一个Camera对象才能渲染画面,故性能消耗要比创建多个真实相机小很多。 本摄像机系统基于Cinemachine的Virtual Camara实现,实现了锁定、旋转、缩放、移动、鼠标显示/隐藏、摄像机位置复位、限制摄像机角度、动态挂载跟随目标、切换视角、遮挡透视等功能,并自带摄像机碰撞,防止穿墙。 相机锁定包含仅水平、仅垂直方向锁定。 相机旋转可由鼠标左键按下移动控制,也可直接移动鼠标控制。 相机缩放可由鼠标滚轮控制,但滚轮控制相对不够流畅,故也设置为鼠标Y轴,即上下移动鼠标控制缩放。 相机移动可由鼠标中键/右键按下移动控制。 玩家可通过相对灵活多变的控制方式,更自由的探索游戏场景。对于喜爱录制二创剧情的玩家,可以更方便的进行运镜,制作出自己的“大片”。 本系统提供了五种视角切换,第一人称、自由视角需要通过鼠标控制摄像机方向,进而控制角色移动方向;第三人称过肩视角通过A、D键控制旋转,鼠标仅可以上下移动视角;斜45度视角及俯视角为固定视角,不可移动,斜45度视角会自适应视角,无需鼠标控制;俯视角在角色被遮挡时,会将遮挡物材质替换为透明材质。 本案例摄像机系统对渲染管线没有要求,可升级到URP或HDRP渲染管线。 本案例摄像机系统基于PC端、旧输入系统开发,通过鼠标键盘进行控制,如需移植到其他平台,需要将相关输入修改为对应平台的输入。如果涉及到多平台发布,推荐替换为新输入系统,方便统一管理。案例中引入的官方最新角色控制器资源基于新输入系统开发,可以研究源码进行相关的学习,此文档不作详细说明。

相关按键: 注:按键可根据自己喜好进行替换。

摄像机相关按键: 第一人称、自由视角切换:V 第三人称过肩视角、自由视角切换:B 斜45度视角、自由视角切换:N 俯视角、自由视角切换:M 是否显示鼠标:0 锁定摄像机Y轴:9 锁定摄像机X轴:8 摄像机旋转控制:按下鼠标左键移动鼠标、或直接移动鼠标 是否由鼠标左键/右键控制摄像机旋转:右Ctrl 摄像机视野缩放:鼠标滚轮、或鼠标Y轴 鼠标滚轮/鼠标Y轴控制摄像机视野缩放切换:右Alt 摄像机移动:按下鼠标中键/右键移动鼠标 自由视角摄像机位置复位:P

CharacterController角色控制器相关按键: 角色奔跑:左Shift+WASD或左Shift+方向键 角色走路:WASD或方向键 角色跳跃:空格 角色旋转(仅第三人称过肩视角时):A、D或方向键左右