扩展

扩展组件可以增强虚拟相机的行为,例如,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   当相机越出提供的限制体积或区域边界时,如何将相机拉回限制体积或区域内,值越小越灵敏,越大越慢。