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);
}
}
}
调用时,只需把该脚本绑定给物体即可。这里是绑定摄像机,以摄像机为第一人称视角转动。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短