中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

unity如何實現攝像機控制

發布時間:2022-01-05 18:09:42 來源:億速云 閱讀:930 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關unity如何實現攝像機控制的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

unity中第一,三人稱控制器上綁定的都有一個叫Mouse Look的腳本,我把它寫下來了;

[AddComponentMenu("Camera-Control/Mouse Look")]
public enum RotationAxes{MouseXAndY=0,Mouse1,MouseY=2}
public RotationAxes axes=RotationAxes.MouseXAndY;
public float SensitivityX=15F;
public float SensitivityY=15F;
public float minimumX=-360F;
public float maxmumX=360F;
public float minimumY=-60F;
public float maxmumY=60F;
float rotationY=0F;
void start()
{
    if(Getcomponent<Rigidbody>())
    {
        GetComponent<Rigidbody>().freezeRotation=true;
    }
}
void update()
{
    if(axes==RotationAxes.MouseXAndY)
    {
        float rotationX=transform.localEulerAngles.y+Input.GetAxis("Mouse X")*SensitivityX;
        rotationY+=Input.GetAxis("MouseY")*SensitivityY;
        rotationY=Mathf.Clamp(rotationY,minimumY,maxmumY);
        transform.localEulerAngles=new Vector3(-rotationY,rotationX,0);
    }
    else if(axes==RotationAxes.MouseX)
    {
        transform.Rotate(0,Input.GetAxis("Mouse X")*SensitivityX,0);
    }
    else
    {
        rotationY+=Input.GetAxis("Mouse Y")*SensitivityY;
        rotationY=Mathf.Clamp(rotationY,minimumY,maxmumY);
        transform.localEulerAngles=new Vector3(-rotationY,transform.localEulerAngles.y,0);
    }
}

主角面向鼠標點擊的方向:

  Vector3 m_pos=Input.mousePosition;     //獲取鼠標的屏幕坐標;
  Vector3 p_pos=Camera.main.WorldToScreenPoint(transform.position);     //將主角的世界坐標轉化為屏幕坐標,為的是獲得他的z軸坐標;
  m_pos.z=p_pos.z;                              //將主角的屏幕z軸坐標賦值給鼠標;
  Vector3 wolrd;
  wolrd.x=Camera.main.ScreenToWorldPoint(m_pos).x;
  world.z=Camera.main.ScreenToWorldPoint(m_pos).z;
  world.y=transform.position.y                   //y軸坐標不變,主角才不會轉進地底;
  transform.LookAt(world);            //主角看向鼠標點擊的位置;

滑動鼠標中建,調整視野的遠近:

    float fov=Camera.main.FieldOfView;       //獲得攝像機調整視野的值;
    fov+=Input.GetAxis("Mouse ScrollWheel")*sensitivity;  //滑動中建,調整視野值得大小;
    fov=Mathf.Clamp(fov,minFov,maxFov);       //限制視野值得大小為(minFov,maxFov);
    Camera.main.FieldOfView=fov;             //再將調整好的值賦值給攝像機的視野;

感謝各位的閱讀!關于“unity如何實現攝像機控制”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郧西县| 贺兰县| 台江县| 武冈市| 阳原县| 峨眉山市| 防城港市| 莒南县| 嘉祥县| 民勤县| 云和县| 灵川县| 镇坪县| 辽宁省| 舟山市| 新兴县| 克东县| 托克托县| 固镇县| 枣强县| 青海省| 江油市| 曲水县| 耿马| 荔波县| 称多县| 松桃| 马山县| 桃江县| 吕梁市| 彝良县| 闽清县| 永善县| 大冶市| 邮箱| 新兴县| 安图县| 汽车| 四子王旗| 邻水| 墨玉县|