Cinemachine系列——Cinemachine Collider
Cinemachine Collider 是Cinemachine虚拟相机的一个扩展,它对虚拟相机的最终位置进行后处理,旨在保持与虚拟相机的“关注目标”(Look At target)之间的视线。它通过远离阻碍视线的游戏对象来实现这一点。
添加Cinemachine Collider扩展到Cinemachine虚拟相机,可以完成以下任务:
将相机推离场景中阻碍视线的障碍物:当有物体阻挡视线时,相机会自动移动,以确保视线畅通。
将相机放置在障碍物前面:如果有障碍物位于虚拟相机与其关注目标之间,相机会调整位置,确保关注目标可见。
评估镜头质量:镜头质量是衡量虚拟相机与理想位置之间距离、虚拟相机与目标之间距离以及阻碍视线的物体的指标。其他模块(如Clear Shot)也会使用镜头质量。
Cinemachine Collider使用物理射线检测(Physics Raycaster)。因此,Cinemachine Collider要求潜在障碍物具有碰撞体(collider)体积。这个要求会带来一定的性能开销。如果这个开销在你的游戏中过于高昂,可以考虑以其他方式实现相同的功能。
Collide Against
Cinemachine Collider 会将这些层中的游戏对象视为潜在的障碍物。它会忽略那些不在选定层中的游戏对象。
简单来说,Cinemachine Collider 只会检测并处理在指定层中的物体,认为它们可能会阻碍相机的视线。对于不在这些层中的物体,相机会视而不见,不会考虑它们作为障碍物。这样可以提高性能,并确保相机的调整只针对实际需要处理的对象。
Ignore Tag
简单来说,如果一个障碍物被赋予了特定的标签,那么Cinemachine Collider将不会考虑这些障碍物为阻碍视线的对象。为了确保目标在视野中能够清晰可见,建议将这个设置的标签与目标的标签相同,这样可以有效避免相机因目标本身而受到干扰。
Transparent Layers
在这些层上的物体将永远不会阻碍目标的视线。
简单来说,任何位于这些指定层的物体都不会被视为视线的障碍,因此相机在调整位置时会忽略它们。这意味着这些层中的物体不会影响到目标的可见性,确保目标始终能够清晰地显示在画面中。
(比如给透明的物体添加这一层?)
Minimum Distance From Target
忽略距离目标的支点(pivot point)小于这个距离的障碍物。
简单来说,设置一个距离阈值,任何距离目标支点小于这个值的障碍物将不会被考虑为阻碍视线的对象。这可以帮助相机在目标非常接近其他物体时,避免不必要的调整,从而保持画面的稳定性和流畅性。
Avoid Obstacles
勾选此选项以允许Collider在目标被障碍物遮挡时移动相机。可以使用距离限制、相机半径和策略属性来调整避开障碍物的方法。如果不勾选,Cinemachine Collider会评估虚拟相机与其理想位置之间的距离、虚拟相机与目标之间的距离,以及有多少障碍物阻碍了目标的视线,从而给出一个镜头质量的评分,但不会尝试移动相机以改善镜头效果。
简单来说,当这个选项被勾选时,相机会在目标被挡住时自动调整位置,以确保目标可见。你可以通过相关设置来控制相机如何避开这些障碍物。如果不勾选,相机将不会主动移动,只会报告当前的镜头质量,意味着可能会出现目标被遮挡而无法清晰显示的情况。
Distance Limit
在检查到这个相机的目标的视线是否清晰时,最大的射线检测距离。输入0将使用当前到目标的实际距离。此选项在勾选“避免障碍物”(Avoid Obstacles)时可用。
简单来说,当启用“避免障碍物”选项后,你可以设置一个最大距离来检测相机与目标之间的视线是否被阻挡。如果设置为0,相机会自动使用当前实际到目标的距离进行检测。这一设置可以帮助开发者控制相机在遮挡情况下的行为,从而确保目标在画面中可见。
Minimum Occlusion Time
除非遮挡持续时间至少达到这个设置的时间,否则不采取任何行动。
简单来说,这意味着相机在判断目标被遮挡时,不会立即做出反应,只有当遮挡情况持续了一定的时间后,才会采取相应的措施。这种设置可以避免由于短暂的遮挡(例如,某个物体快速经过)而导致相机频繁调整,从而保持画面的稳定性。
Camera Radius
相机会尽量保持与任何障碍物之间的这个距离。建议将这个值设置得小一些。如果由于相机的视野(FOV)过大而导致相机看到障碍物内部,可以增加这个值。
简单来说,这个设置控制相机与障碍物之间的最小距离。保持这个值较小可以让相机更贴近目标,但如果视野过大,可能会使相机穿透障碍物,从而造成不自然的视角。在这种情况下,可以适当增加这个值,以确保相机不会进入障碍物内部,保持更自然的拍摄效果。
Strategy
Collider保持目标可见的方式。当“避免障碍物”(Avoid Obstacles)选项被勾选时,此设置可用。
简单来说,当目标被障碍物遮挡时,Cinemachine Collider会通过不同的方法来调整相机的位置,确保目标能够尽量保持在视野中。这个设置允许你选择相机如何处理视线被遮挡的情况,比如相机是向后推开、改变角度,还是采取其他策略来确保目标可见。
- Pull Camera Forward:沿着相机的Z轴向前移动相机,直到它位于离目标最近的障碍物前面。简单来说,这个设置让相机自动向前移动,以确保它不被障碍物遮挡,而是保持在离目标最近的障碍物的前面。这样可以确保目标在画面中可见,同时避免障碍物对视线的干扰。
- Preserve Camera Height:在尝试保持相机原始高度的同时,将相机移动到一个替代的视角。简单来说,这个设置允许相机在不改变高度的情况下,调整位置以获得不同的拍摄角度。这种方式可以帮助开发者在保证视角变化的同时,保持相机的高度不变,从而实现更灵活的画面构图。
- Preserve Camera Distance:在尽量保持相机与目标之间原始距离的同时,将相机移动到一个替代的视角。简单来说,这个设置允许相机在不改变与目标距离的情况下,调整位置以获得不同的拍摄角度。这种方式可以帮助开发者在保持与目标相对距离不变的情况下,探索多样化的视角,确保画面构图的灵活性和多样性。
Maximum Effort
处理障碍物碰撞的上限数量。较高的数字可能会影响性能。在大多数环境中,4个就足够了。
简单来说,这个设置限制了相机在检查视线时,能够处理的障碍物数量。如果设置的值过高,可能会导致游戏性能下降,因此建议在大多数情况下,将这个值设置为4,这通常足以确保相机正确识别和处理障碍物,而不会造成过多的性能负担。
Smoothing Time
在距离目标最近的点上保持相机的最小时间(以秒为单位)。这个设置可以用来减少在障碍物较多的环境中相机的多余移动。当勾选“避免障碍物”(Avoid Obstacles)时,此选项可用。
简单来说,这个设置要求相机在靠近目标的最短时间内不进行频繁的调整,以减少在环境中障碍物较多时,相机因不断移动而造成的混乱。这有助于提高画面的稳定性和流畅性,确保目标在视线中的持续可见性。
Damping
遮挡消失后,相机返回到正常位置的速度。较小的数值会使相机反应更快,而较大的数值会使相机反应更慢。当勾选“避免障碍物”(Avoid Obstacles)时,此选项可用。
简单来说,这个设置控制了相机在视线被遮挡后恢复到原来位置的速度。如果设置较小,相机会快速调整到正常位置;如果设置较大,相机的调整会变得较慢。这种灵活的响应设置可以根据场景需求进行调整,以确保相机在遮挡消失后能平滑地恢复视角。
Damping When Occluded
相机避开障碍物的移动速度。较小的数值会使相机反应更快,而较大的数值会使相机反应更慢。当勾选“避免障碍物”(Avoid Obstacles)时,此选项可用。
简单来说,这个设置控制了相机在检测到障碍物时的反应速度。如果数值较小,相机会迅速移动以避开障碍物;如果数值较大,相机的移动反应会比较慢。根据场景需求,可以调整这个设置,以确保相机在遇到障碍物时能够灵活而顺畅地调整位置。
Optimal Target Distance
如果设置的值大于零,当目标距离此值更近时,镜头的评分会更高。将此属性设置为0可以禁用此功能。
简单来说,这个设置用于调整镜头质量评分的机制。如果目标离设定的距离越近,镜头的评分就会提高,意味着镜头质量更好。如果不希望根据目标距离影响评分,可以将这个值设置为0,从而关闭这一功能。
本文作者:陈侠云
本文链接:https://www.cnblogs.com/chenxiayun/p/18496237
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步