如何start/stop 相机的运动?

How to start/stop camera's movement?

我有两个摄像头:摄像头 #1 和摄像头 #2。 从场景一开始,Camera #1 就被启用并显示场景。一段时间后,我将更改为 Camera #2(启用它以便它可以显示场景)。

这是我的代码:

        foreach(Camera c in  GameObject.FindObjectsOfType(typeof(Camera))) 
        {

            if ((c.name == "Camera #1") && (c.transform.position.x>30))
            {
                c.enabled = false;


                foreach(Camera d in  GameObject.FindObjectsOfType(typeof(Camera))) 
                {

                    if(d.name == "Camera #2") 
                    {
                        d.enabled = true;

                    }

                }
            }

我可以在摄像机之间成功切换,但我有一个问题:不仅摄像机 #1,摄像机 #2 也从场景的开头开始移动。所以当我切换到 Camera #2 时,我可以看到 Camera #2 几乎完成了他的终点。

我只想在更改为 Camera #2 时才启动它。

如何start/stop Camera #2' 移动? 要么 如何将 Camera #2 的运动重置到起点?

(我正在使用 Camera Path Animator 资源。)

有几个可能的问题:

  • Camera #2 从一开始就没有被禁用,所以它的运动会执行。通过在编辑器中禁用它来解决这个问题。
  • Camera #2' Path Animator 未附加到 Camera #2。因此,即使 Camera #2 处于禁用状态,它也不会被禁用。通过将 Animator 放在 Camera #2 上或通过其他方式禁用它的移动来解决此问题。
  • Camera #2 是 Camera #1 的子项,因此继承了 Camera #1 的平移。通过将 Camera #2 移出 Camera #1
  • 来解决这个问题

我会考虑为整个上下文使用动画(如果可能)。看来你在制作某种电影动画。

将您的相机放在游戏对象下。那个人获取 Animator 并创建动画。

该动画将控制位置以及相机是否随时间启用。动画曲线和摄影表可以轻松高效地进行控制。除此之外,如果需要调用一些外部方法,也可以使用AnimationEvent。

http://docs.unity3d.com/Manual/class-AnimatorController.html

这是禁用 camerapathanimator 并停止 Camera #2 移动直到 Camera #1 到达特定坐标的代码。

  1. 创建新的游戏对象。
  2. 使用 Camera Path Animator 资产创建 2 个 Camerapaths
  3. 将两个相机路径的 "Play on start" 值设置为 TRUE
  4. 为游戏对象创建一个新的 C# 脚本。
  5. 将下面的代码Poipulate成void Update(){}

    foreach(GameObject.FindObjectsOfType(typeof(Camera))) { 如果 ((c.name == "Main Camera")) { 如果 ((c.transform.position.z > -20)) { c.enabled = 假; foreach(GameObject.FindObjectsOfType(typeof(相机))中的相机d){ 如果(d.name == "Main Camera (1)"){ foreach(CameraPathAnimator e in GameObject.FindObjectsOfType(typeof(CameraPathAnimator))) { 如果(e.name == "Main Camera Path (1)"){ e.enabled = 真; d.enabled = 真; } } } } } 别的 { foreach(CameraPathAnimator e in GameObject.FindObjectsOfType(typeof(CameraPathAnimator))) { 如果(e.name == "Main Camera Path (1)"){ e.enabled = 假; } } c.enabled = 真; } } }