摄像机旋转问题

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);
}
实现了摄像机的水平旋转、垂直旋转并且对垂直旋转的角度能够进行限定

猜你喜欢

转载自blog.csdn.net/qq_40133830/article/details/80959527