1
  • 3D游戏
  • 2 个游戏对象: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 的死区之外时,如何才能在 2 个游戏对象之间实现平滑的相机转换?

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

4

1 回答 1

1

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);
}
于 2019-11-24T18:08:37.597 回答