Unity3D实现鼠标控制视角转动
前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动。
代码如下:
C#脚本(在Unity5.5.1下能运行):
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; publicclassMouseView:MonoBehaviour{ publicenumRotationAxes { MouseXAndY=0, MouseX=1, MouseY=2 } publicRotationAxesm_axes=RotationAxes.MouseXAndY; publicfloatm_sensitivityX=10f; publicfloatm_sensitivityY=10f; //水平方向的镜头转向 publicfloatm_minimumX=-360f; publicfloatm_maximumX=360f; //垂直方向的镜头转向(这里给个限度最大仰角为45°) publicfloatm_minimumY=-45f; publicfloatm_maximumY=45f; floatm_rotationY=0f; //Usethisforinitialization voidStart(){ //防止刚体影响镜头旋转 if(GetComponent()){ GetComponent ().freezeRotation=true; } } //Updateiscalledonceperframe voidUpdate(){ if(m_axes==RotationAxes.MouseXAndY){ floatm_rotationX=transform.localEulerAngles.y+Input.GetAxis("MouseX")*m_sensitivityX; m_rotationY+=Input.GetAxis("MouseY")*m_sensitivityY; m_rotationY=Mathf.Clamp(m_rotationY,m_minimumY,m_maximumY); transform.localEulerAngles=newVector3(-m_rotationY,m_rotationX,0); }elseif(m_axes==RotationAxes.MouseX){ transform.Rotate(0,Input.GetAxis("MouseX")*m_sensitivityX,0); }else{ m_rotationY+=Input.GetAxis("MouseY")*m_sensitivityY; m_rotationY=Mathf.Clamp(m_rotationY,m_minimumY,m_maximumY); transform.localEulerAngles=newVector3(-m_rotationY,transform.localEulerAngles.y,0); } } }
调用时,只需把该脚本绑定给物体即可。这里是绑定摄像机,以摄像机为第一人称视角转动。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。