Unity3d Cinemachine虚拟摄像机在保持死区的同时在对象之间切换 3d游戏 2个游戏对象:A和B(都是在运行时生成的)

Unity3d Cinemachine虚拟摄像机在保持死区的同时在对象之间切换 3d游戏 2个游戏对象:A和B(都是在运行时生成的),unity3d,cinemachine,Unity3d,Cinemachine,我想得到从对象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位于第

我想得到从对象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的死区之外时,我如何才能在两个游戏对象之间实现平滑的相机转换


我知道我可以通过移动物体,然后将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);
}

你试过虚拟相机的follow属性了吗?它似乎没有链接到实际的unity Camerays,我试过了。跟随转置器和跟随帧转置器,但没有运气。(与第二种情况相同)