private void Start()
{
//transform.eulerAngles
//仅使用这个变量读取和设置角度为绝对值。
//不要递增它们,当超过角度360度,它将错误
//x、y、z角代表绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(这个顺序)。
//获取初始的欧拉角
//绕z轴旋转z度
mY = transform.eulerAngles.x;
//绕X轴旋转x度
mX = transform.eulerAngles.y;
}
// Update is called once per frame
void Update () {
//根据鼠标的移动改变摄像机的角度、-= +=是摄像机的旋转方向问题
mX += Input.GetAxis("Mouse X") * 5;
mY -= Input.GetAxis("Mouse Y") * 5;
//还需要进行一些限制,这里只是粗略的测试(当超过角度360度,它将错误)
mY = Mathf.Clamp(mY, -60, 60);
//转换成四元素
Quaternion m_Qua = Quaternion.Euler(mY, mX, 0);
transform.localRotation = Quaternion.Slerp(transform.localRotation,
m_Qua, Time.deltaTime * 3);
}
实现了摄像机的水平旋转、垂直旋转并且对垂直旋转的角度能够进行限定