Unity3d相机旋转不起作用

时间:2016-10-13 11:50:34

标签: c# unity3d camera rotation

当我按Q或E时,我试图让我的相机粘在我的播放器上转过45度但是由于某种原因我不能让它工作。即时通讯使用C#。

using UnityEngine;
using System.Collections;
public class Camera : MonoBehaviour 
{
    int rotatespeed = 3;
    int rotationstart = 90;

    public GameObject player;

    private Vector3 offset;

    // Use this for initialization
    void Start()
    {
        offset = transform.position - player.transform.position;
    }     

    // Update is called once per frame
    void LateUpdate() {
            transform.position = player.transform.position + offset;
    }

    void Update()
    {
        if (Input.GetKey("q"))
        {
            Camera.main.transform.rotation = Quaternion.Euler(x + 45 , y, z);
        }
        if (Input.GetKey("e"))
        {
            Camera.main.transform.rotation = Quaternion.Euler(x - 45, y, z);
        }
    }
}

1 个答案:

答案 0 :(得分:3)

旋转时你应该乘以

    if (Input.GetKey("q"))
    {
        Camera.main.transform.rotation *= Quaternion.Euler(45 , 0, 0);
    }
    if (Input.GetKey("e"))
    {
        Camera.main.transform.rotation *= Quaternion.Euler(-45, 0, 0);
    }

然而,如果你想要左右使用以下

,这会让它向上和向下看
    if (Input.GetKey("q"))
    {
        Camera.main.transform.rotation *= Quaternion.Euler(0, 45, 0);
    }
    if (Input.GetKey("e"))
    {
        Camera.main.transform.rotation *= Quaternion.Euler(0, -45, 0);
    }

重要的附注

请记住,GetKey会在用户按住时返回true,即使在非常快速的按下,也会导致相机因为仍然是多帧而失去控制。您最有可能想要使用GetKeyDown,每次用户按下

时,它只会返回true