扩展
扩展组件可以增强虚拟相机的行为,例如,Collider扩展组件可用防止相机进入碰撞体里面,从而导致丢失目标视野。Cinemachine包含各种扩展。通过派生CinemachineExtension类来创建您自己的自定义扩展。
如果要给虚拟相机添加一个扩展:
- 在Scene窗口或Hierarchy窗口中选择你的虚拟相机。
- 在检查器窗口,使用Add Extension下拉菜单选择一个扩展。
避免碰撞和评估拍摄质量
当角色和物体在复杂场景中移动时,场景中的障碍物有时会出现在相机和目标之间。类似地,你可能需要将相机移动到场景中另一个游戏对象已经占据的位置。
Cinemachine提供了扩展来处理这些情况:
- Cinemachine Collider
- Cinemachine Confiner
Cinemachine Collider
Cinemachine Collider是Cinemachine虚拟相机的扩展。它对虚拟相机的最终位置进行后期处理,以试图保持Loot At目标在虚拟相机的视野内。它通过远离阻碍视图的游戏对象来做到这一点。
添加一个Cinemachine Collider扩展到Cinemachine虚拟相机,可以完成以下几个功能:
- 将相机远离场景中的障碍物。
- 把相机放在虚拟相机和它的观察目标之间的障碍物前面。
- 评估拍摄质量。拍摄质量由虚拟相机的位置和它理想位置之间距离,虚拟相机和目标位置的距离,以及虚拟相机和阻碍视野对象间的距离决定。其他模块也用了拍摄质量,比如Clear Shot。
Collider使用了Physics Raycaster。因此,Cinemachine Collider要求障碍具有碰撞体。这种需求需要性能成本。如果这个成本在你的游戏中难以承受,那就考虑用不同的方式来实现这个功能。
属性 | 功能 | |
Collide Against | 指定导致碰撞的物体处于哪些层,它会忽略不在所选层中的游戏对象。 | |
Minimum Distance From Target | 当障碍物和目标的距离小于此值时会被忽略。 | |
Avoid Obstacles | 当目标被障碍物遮挡时,选中将会允许相机移动以避开目标,未选中时,相机将不会移动。 | |
Distance Limit | 碰撞检测射线的长度,Avoid Obstacles勾选时可用,上面提到Collider使用Physics Raycaster射线来判断是否有碰撞,该值表示射线的最大长度,如果障碍物到相机的距离大于此值时,相机将不会移动。输入0表示使用当前相机到目标的实际距离。 | |
Camera Radius | 相机的半径,Avoid Obstacles勾选时可用,由于视线被遮挡,相机移动到障碍物之前,相机和障碍物保持的距离, | |
Strategy | 保持目标视线的方式,Avoid Obstacles勾选时可用。 | |
Pull Camera Forward | 移动相机沿着其本地坐标系Z轴向前,直到它是在障碍物面前最近的目标。 | |
Preserve Camera Height | 移动相机到另一个视角,同时试图保持相机在其原来的高度。 | |
Preserve Camera Distance | 移动相机到另一个视角,同时试图保持相机与目标的原始距离。 | |
Smoothing Time | Avoid Obstacles勾选时可用,相机避开障碍物所需的最小时间。当环境有许多障碍物时,可以减少相机的运动。 | |
Damping | Avoid Obstacles勾选时可用,在遮挡消失后,如何快速将相机恢复到正常位置。小的数字使相机反应更灵敏。较大的数字使相机反应更慢。 | |
Damping When Occluded | Avoid Obstacles勾选时可用,移动相机以避开障碍物的速度。小的数字使相机反应更灵敏。较大的数字使相机反应更慢。 | |
Optimal Target Distance | 如果大于0,当目标距离更接近这个距离时,给予更高的拍摄分数(影响拍摄质量)。将此属性设置为0以禁用此特性。 | |
Transparent Layers |
这些层上的对象永远不会阻碍目标的视野。 |
|
Minimum Occlusion Time | 除非遮挡至少持续了这么长时间,否则不会有什么影响。 | |
Maximum Effort | 处理障碍物的上限,较高的值会影响性能。设置为4时,足够应付大多数情况。 | |
Ignore Tag | 带有此标签的障碍将被忽略。建议将该字段设置为目标的标记。 |
Cinemachine Confiner
使用Cinemachine Confiner扩展来限制相机的位置在一个体积内或一个区域内。
Confiner可在2D或3D模式下运行。模式影响它接受的边界形状的类型。在3D模式下,相机在3D中的位置被限制在一个体积内。这也适用于2D游戏,但你需要将深度考虑在内。在2D模式中,你不需要担心深度。
属性 | 功能 | |
Confine Mode | 2D模式还是3D模式,用于判断是限制相机在体积内还是区域内 | |
Confine 2D | 限制相机在区域内 | |
Confine 3D | 限制相机在体积内 | |
Bounding Volume | 当Confine Mode设置为Confine 3D时可用,提供一个Collider体积使相机限制在里面运动。 | |
Bounding Shape 2D | 当Confine Mode设置为Confine 2D时可用,提供一个Collider 2D区域使相机限制在里面运动。 | |
Confine Screen Edges | 当相机为正交相机时可用,勾选将会使相机的视野(也就是屏幕的边缘)限制在提供的区域内,可防止相机越过场景边界。否则只限制相机中心在提供的区域内。 | |
Damping | 当相机越出提供的限制体积或区域边界时,如何将相机拉回限制体积或区域内,值越小越灵敏,越大越慢。 |