如何根据相机坐标更改Unity中的相机?

How to change cameras in Unity based on camera coordinates?

我想在 Unity 中制作电影,因此我需要多个摄像机和摄像机路径。 最重要的是,我想在它们之间进行更改。例如,如果 Camerapath1 到达 Camera1 的重要点,那么我想更改为 Camerapath2 和 Camera2,等等。

我还安装了 Camera Path Animator 资产。当我仅将一个相机用于多个相机路径但我无法在主相机之间切换时,它工作得很好。

我是 Unity 的新手。我也知道我应该这样做:

...
camera1.camera.active = false; 
camera2.camera.active = true;
...

...但是我应该在哪里填充这些行?最重要的是,当特定相机路径上的相机到达特定点时,我如何捕捉事件?

要走的路是一个动画控制器,它将所有摄像机作为子级并控制所有摄像机的活动状态。这提供了对行为的完美控制。

创建一个空的游戏对象,将所有摄像机添加为子对象,为具有一个动画的主对象添加一个 Animator。此动画使用所有相机并设置它们的活动状态。这种方法的一个额外好处是可以使用 AnimationEvent 进程调用方法。您仍然可以在动画中定义一些触发动作,例如爆炸或物体移动。

正如我所说,这给了你完美的控制,因为你可以在特定时间轻松定义动作。

它的缺点是过程的刚性。它可能不像代码那么灵活,但既然你是在拍电影,你可能不需要灵活性。

如果是这样,您的相机将配备对撞机和刚体(isKinematic true),然后您将拥有一些带有简单脚本的触发框:

public void CameraTrigger:MonoBehaviour{
    public GameObject nextCamera;
    void OnTriggerEnter(Collider col){
        if(col.gameObject.CompareTag("Camera")){ 
              col.gameObject.SetActive(false);
              nextCamera.SetActive(true);
        }
    }
}

然后将要开始的相机拖到 nextCamera。