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);
}
}
}
调用时,只需把该脚本绑定给物体即可。这里是绑定摄像机,以摄像机为第一人称视角转动。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。