此脚本挂载在摄像机上,直接复制粘贴也是可以直接使用的。
//定义欧拉角.
Vector3 angle = Vector3.zero; //初始化属性xyz都为0.
//改变欧拉角.
angle.x = m_Transform.localEulerAngles.x - Input.GetAxis("Mouse Y") * 100f * Time.deltaTime;
angle.y = m_Transform.localEulerAngles.y + Input.GetAxis("Mouse X") * 100f * Time.deltaTime;
//通过欧拉角 改变自身的欧拉旋转角度.
m_Transform.localEulerAngles = angle;
解读一下代码意思:
前三段代码 都是改变angle这个定义的欧拉角的数值,因为鼠标只有屏幕位置 所以只需要改变Y和X,至于+-和XY轴是反的问题我还没找到解释,如果有大佬知道的话麻烦评论区告诉我一下谢谢了。
最后一段代码是 通过欧拉角数值的动态改变 从而改变自身的欧拉旋转。
单独解释代码意思:
angle.x = m_Transform.localEulerAngles.x - Input.GetAxis("Mouse Y") * 100f * Time.deltaTime;
其中,m_Transform.localEulerAngles.x 的意思是:摄像机的欧拉旋转的x轴的值。
Input.GetAxis("Mouse Y") 的意思是:当前鼠标在屏幕位置Y轴上的位置。
Input.GetAxis("Mouse X") 的意思是:当前鼠标在屏幕位置X轴上的位置。
100f *?Time.deltaTime 可以理解为 鼠标速度/鼠标灵敏度。
如果需要了解第二人称,第三人称的镜头旋转,或更详细的第一人称可以查看这个文章:
https://blog.csdn.net/ghl1390490928/article/details/80139439
如果要了解更详细的localEulerAngles方法解释:
https://blog.csdn.net/weixin_44739495/article/details/110680128?ops_request_misc=&request_id=&biz_id=102&utm_term=unity%20localEulerAngles%20&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-110680128.pc_search_result_control_group&spm=1018.2226.3001.4187
其他旋转方法:
https://blog.csdn.net/zxy13826134783/article/details/79461816?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163772680316780265457647%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163772680316780265457647&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-79461816.pc_search_result_control_group&utm_term=unity+localEulerAngles+&spm=1018.2226.3001.4187
|