首页 > 编程知识 正文

unity不能旋转视角,unity3d鼠标控制物体旋转

时间:2023-05-05 23:52:47 阅读:139270 作者:3655

之前学习了物体的移动功能,现在来学习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 );

}

}

}

调用时,只要将该脚本绑定到物体上即可。 这里把照相机联系起来,以照相机为第一人称的视点旋转。

以上是本文的全部内容,希望对大家的学习有帮助。 另外,我希望你能多多支持编剧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。