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

时间:2015-12-19 07:15:26

标签: unity3d unityscript

我想在Unity制作一部电影,所以我需要几台摄像机和摄像机路径。 在这个偏离的过程中,我想在它们之间进行更改。例如,如果Camerapath1与Camera1达到一个重要点,那么我想用Camera2等更改为Camerapath2。

我还安装了Camera Path Animator资产。当我使用它只有一个摄像头用于几个摄像头路径时,它工作得很好但是我无法在主摄像机之间进行更改。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

创建一个空的游戏对象,将所有摄像机添加为子对象,使用一个动画将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开始下一步。