摄像机上下旋转角度的控制
2016-09-28 10:37
281 查看
自己编写第一人称视角过程中的摄像机角度的旋转:
如果使用欧拉角进行控制,会产生万象锁(自行百度),因此,用四元数,代码如下:
Quaternion ViewControll(Quaternion view)
{
view.x /= view.w;
view.y /= view.w;
view.z /= view.w;
view.w = 1;
float angle = 2 * Mathf.Rad2Deg * Mathf.Atan(view.x);
angle = Mathf.Clamp(angle, 90, -90);
view.x = Mathf.Tan((Mathf.Deg2Rad) * (angle / 2));
return view;
}
主函数中:
float yRot = Input.GetAxis("Mouse X") * CameraSet.XSensitive;
//m_camRotate += new Vector3(-xRot, 0f, 0f);
m_camRotate *= Quaternion.Euler(-xRot, 0f, 0f);
m_camRotate = ViewControll(m_camRotate);
m_camTrans.localRotation = m_camRotate;
完整的代码:
如果使用欧拉角进行控制,会产生万象锁(自行百度),因此,用四元数,代码如下:
Quaternion ViewControll(Quaternion view)
{
view.x /= view.w;
view.y /= view.w;
view.z /= view.w;
view.w = 1;
float angle = 2 * Mathf.Rad2Deg * Mathf.Atan(view.x);
angle = Mathf.Clamp(angle, 90, -90);
view.x = Mathf.Tan((Mathf.Deg2Rad) * (angle / 2));
return view;
}
主函数中:
float yRot = Input.GetAxis("Mouse X") * CameraSet.XSensitive;
//m_camRotate += new Vector3(-xRot, 0f, 0f);
m_camRotate *= Quaternion.Euler(-xRot, 0f, 0f);
m_camRotate = ViewControll(m_camRotate);
m_camTrans.localRotation = m_camRotate;
完整的代码:
相关文章推荐
- 【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转
- unity3d实现控制摄像机放大缩小视野加左右可旋转视角角度
- D3D中使用鼠标控制摄像机旋转
- Unity3D入门(五):鼠标控制旋转、摄像机缩放
- 【图形处理】如何将一个平面图形按照角度往z轴扭曲【2】-根据左右上下四个边进行旋转
- unity 鼠标控制摄像机围绕物体旋转
- 鼠标控制摄像机围绕物体旋转拍摄
- Unity3D 第一人称视角摄像机旋转控制
- Unity3D中通过陀螺仪来控制摄像机的旋转
- 51单片机 步进电机的驱动和旋转角度控制
- Unity 控制摄像机旋转、放大、缩小
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- 修改DX代码:实现按方向键上下能控制摄像机的距离
- jQuery实现可以控制图片旋转角度效果(附demo源码下载)
- Unity3D【脚本】鼠标对摄像机的控制 - 点击鼠标,摄像机围绕圆心旋转(第三次修改)
- u3d协程控制匀速旋转角度
- 51单片机 步进电机旋转角度控制
- 在unity3d中用EasyTouch的操纵杆控制相对于不同角度的摄像机的第三人物视角的相对位移的代码段
- 控制摄像机围绕目标旋转观察
- Windows 8 Directx 开发学习笔记(三)摄像机设置及控制正方体旋转