之前学习了物体的移动功能,现在来学习C#实现鼠标控制摄像头(视角)的移动吧。
代码如下所示。
C#脚本(可在Unity 5.5.1上运行) :
using System.Collections;
using system.collections.generic;
using UnityEngine;
publicclassmouseview : mono behaviour {
公共枚举旋转轴
{
MouseXAndY=0,
MouseX=1,
MouseY=2
}
publicrotationaxesm _ axes=rotation axes.mouse xandy;
public float m_sensitivityX=10f;
公共浮体m _ sensitivity y=10f;
//水平方向镜头转向
public float m_minimumX=-360f;
公共float m _ maximumx=360 f;
//垂直方向的镜头转向(此处最大仰角为45) )。
public float m_minimumY=-45f;
公共float m _ maximumy=45f;
float m_rotationY=0f;
//Use this for initialization
void Start () }
//确保刚体不影响镜头的旋转
if (获取组件() ) }
GetComponent ().freezeRotation=true;
}
}
//Update is called once per frame
void更新(}
if (m _ axes==rotation axes.mouse xandy ) {
floatm _ rotation x=transform.localeulerangles.y input.getaxis (' mousex ' ) * m_sensitivityX;
m _ rotation y=input.getaxis (mousey ) * m_sensitivityY;
m _ rotation y=mathf.clamp (m _ rotation y,m_minimumY,m_maximumY );
transform.localeulerangles=new vector3(-m _ rotation y,m_rotationX,0 );
} else if (m _ axes==rotation axes.mousex ) )
transform.rotate(0,input.getaxis ) ' mousex ' ) * m_sensitivityX,0 );
} else {
m _ rotation y=input.getaxis (mousey ) * m_sensitivityY;
m _ rotation y=mathf.clamp (m _ rotation y,m_minimumY,m_maximumY );
transform.localeulerangles=new vector3(-m _ rotation y,transform.localEulerAngles.y,0 );
}
}
}
调用时,只要将该脚本绑定到物体上即可。 这里把照相机联系起来,以照相机为第一人称的视点旋转。
以上是本文的全部内容,希望对大家的学习有帮助。 另外,我希望你能多多支持编剧。