如何平稳地旋转相机?

时间:2014-11-09 13:46:46

标签: c# unity3d unity3d-editor

我正在与C#进行二维统一游戏。现在,我正在尝试使相机旋转,我正在使用此代码:

rotateX = Random.Range (0, 50);
Camera.main.transform.eulerAngles = Vector3(0,0,rotateX);

但每次我尝试运行游戏时,都会给我一个错误。 任何人都有关于如何(平滑地)将相机从一侧旋转到另一侧的提示?

4 个答案:

答案 0 :(得分:6)

您可以通过将代码更改为:

来消除错误
void Update () {
    float rotateX = Random.Range (0, 50);
    transform.eulerAngles = new Vector3(0,0,rotateX);
}

将包含它的脚本组件附加到相机。但随后它会一直随意旋转。

从问题来看,我不确定你想要什么样的轮换。但你可以使用例如这个

void Update () {
    transform.Rotate(Vector3.forward, 10.0f * Time.deltaTime);
}

平稳旋转相机。只需将第一个参数更改为围绕要旋转的轴的轴。

答案 1 :(得分:3)

不要使用Camera.main。为您的相机写一个类,然后将其添加到场景中的相机。像这样使用transform.rotation:

void Update () 
{
    transform.rotation = Quaternion.Euler(y, x, z);
    transform.position = Quaternion.Euler(y, x, z);
}

有关详情,请参阅此处: http://wiki.unity3d.com/index.php?title=MouseOrbitImproved

答案 2 :(得分:1)

最简单的方法是将该代码放入游戏对象中,添加您想要旋转的当前相机。

public class swipebutton : MonoBehaviour

{     公共相机凸轮;

void Update()
{

    cam.transform.Rotate(Vector3.up, 20.0f * Time.deltaTime);
}

}

答案 3 :(得分:0)

错误是因为您缺少new初始值设定项。

rotateX = Random.Range (0, 50);
Camera.main.transform.eulerAngles = new Vector3(0,0,rotateX); //<--- put 'new' before 'Vector3'