我有两个摄像头:摄像头#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的动作。
如何开始/停止相机#2'的移动? 要么 如何将Camera#2的移动重置为起点?
(我正在使用Camera Path Animator资产。)
答案 0 :(得分:2)
有几个可能的问题:
答案 1 :(得分:1)
我会考虑在整个上下文中使用动画(如果可能的话)。看来你正在制作某种电影动画。
将相机放在GameObject下。那家伙得到Animator并制作动画。
该动画将控制位置以及是否随着时间推移启用相机。动画曲线和dopesheet可以轻松有效地控制。最重要的是,如果需要调用一些外部方法,也可以使用AnimationEvent。
http://docs.unity3d.com/Manual/class-AnimatorController.html
答案 2 :(得分:0)
这是禁用camerapathanimator并停止Camera#2移动直到Camera#1到达特定坐标的代码。
将下面的代码改为void Update(){}
foreach(GameObject.FindObjectsOfType中的Camera c(typeof(Camera))){ if((c.name ==“Main Camera”)){ if((c.transform.position.z> -20)){ c.enabled = false; foreach(GameObject.FindObjectsOfType中的Camera d(typeof(Camera))){ if(d.name ==“Main Camera(1)”){ foreach(CameraPathAnimator e in GameObject.FindObjectsOfType(typeof(CameraPathAnimator))){ if(e.name ==“Main Camera Path(1)”){ e.enabled = true; d.enabled = true; } } } } } else { foreach(CameraPathAnimator e in GameObject.FindObjectsOfType(typeof(CameraPathAnimator))){ if(e.name ==“Main Camera Path(1)”){ e.enabled = false; } } c.enabled = true; } } }