【问题标题】:How to change cameras in Unity based on camera coordinates?Unity中如何根据相机坐标改变相机?
【发布时间】:2015-12-19 16:59:15
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: unity3d unityscript


    【解决方案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。

    【讨论】:

    • 嗯,您的评论似乎真的很有帮助,但我是 Unity 的新手。我已经成功添加了一个新的空游戏对象,并将所有相机作为子对象添加到其中。成功添加动画师。但这就是我所能完成的。几个问题:哪一个是“主要对象”?动画如何拍摄所有相机?自动地?还是应该手动添加摄像头?呃,很多问题。您能否链接一些很酷的网站或书籍,其中描述得很好,包括屏幕截图?!
    • 好吧,这就是它有时会变得棘手的地方。您将所有相机都放在一个主要对象下,它有一个动画器组件,您创建了一个 AnimatorController(在 Project 中右键单击并 Create->AnimatorController)并将其分配给动画器控制器插槽。现在,在层次结构中选择您的主要对象,然后进入菜单-> 窗口-> 动画。它会打开一个新的动画窗口。您可以创建一个新动画并向其中添加新项目。你应该看看这个unity3d.com/learn/tutorials/topics/animation
    • 这很有帮助。现在我可以做到了。将学习链接教程。谢谢!
    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多