使用Unity3d中的脚本,相机不会旋转

时间:2018-08-24 21:51:30

标签: c# unity3d

 if (Input.GetKeyDown(KeyCode.E))
    {
        Camera.main.transform.eulerAngles = new Vector3(0, 180, 0);
    }

此代码应旋转相机,使其面向播放器后面。它意味着要成为一种“回头看”功能。问题是,事实并非如此。它只是吓坏了,并恢复到原始方向。为什么会这样?

1 个答案:

答案 0 :(得分:2)

按“ E”键时不会旋转GameObject。相反,您是在按“ E”键时将摄像机的旋转度设置为相同的180值。每按一次该键将始终为180。

如果您想在每次按“ E”键时将摄像机旋转180度,则必须使用+=而不是仅仅=来增加摄像机的旋转,而只需使用180 deg一遍又一遍:

void Update()
{
    if (Input.GetKeyDown(KeyCode.E))
    {
        Camera.main.transform.eulerAngles += new Vector3(0, 180, 0);
    }
}

您也可以使用transform.Rotate

void Update()
{
    if (Input.GetKeyDown(KeyCode.E))
    {
        Camera.main.transform.Rotate(new Vector3(0, 180, 0));
    }
}

请注意,我如何使用Update函数成为FixedUpdate,是用来向Rigidbody对象添加物理力。