Cinemachine 虚拟摄像机在保持死区的同时在对象之间进行转换

Cinemachine Virtual Camera Transition between objects while keeping dead zone

我想要从对象 A 到 B 的平滑过渡,但前提是对象 B 在 vcam 的盲区之外。 Vcam 应该以静态旋转的方式观察物体。 (只有相机位置应该改变)

我假设我必须使用:

Follow property - because it only affects vcam transform
Framing Transposer - to use dead zones in body component

我已经尝试用 B 生成新的 vcam 并禁用第一个 vcam - 这可以在相机之间实现平滑过渡,但它总是这样做,即使 A 和 B 在第一个和第二个 vcam 的盲区内。

只有当新游戏对象位于前一个 vcam 的死区之外时,如何才能在 2 个游戏对象之间实现平滑的相机转换?

我知道我可以通过移动对象然后将 vcam 从 A 移动到 B 来做到这一点,这应该适用于死区,但如果可能的话,我正在寻找更清洁的解决方案

如何实现我在问题中描述的内容的描述由 Unity 工作人员 - Gregoryl 提供。

当东西进出死区时,CM 不会给你通知。

您可以通过轮询 B 相对于相机的位置并手动计算 CameraPosToB 和 CameraForward 之间的角度是否足够大,并在第二个 vcam 足够大时激活它来完成您正在寻找的内容。

这是代码的一部分 - 执行他描述的操作:

var angleToPlayer = Vector3.Angle(mainCamera.transform.forward, (player.transform.position - mainCamera.transform.position).normalized);
if (angleToPlayer > 20f)
{
    cameraWatchingPlayer.enabled = false;
    Destroy(cameraWatchingPlayer.gameObject, 3f);

    InstantiateCamera(posX, posZ, player.transform);
}