Unity簡單鏡頭旋轉縮放

2021-06-20 16:29:34 字數 1571 閱讀 7494

摘自:

以目標為中心旋**

rotation_x += input.getaxis("mouse x") * 速度平滑係數

rotation_y -= input.getaxis("mouse y") * 速度平滑係數

滑鼠往下要作的是抬頭動作,比較符合人類的認知習慣 所以 y是-= 與滑鼠運動的反方向

transform.rotation = quaternion.euler(y,x, 0);

transform.position = transform.rotation * vector3(0.0, 0.0, -distance) + target.position;

vector3(0.0, 0.0, -distance) :x y方向都是0,距離,因為要正對目標的效果,數學意義上就是在乙個水平面和乙個垂直面上,保持distance的距離,因為是從前往後看 所以distance是負的距離,否則就是用屁股看了

以自身為中心旋轉(fps視角):

transform.rotate(y,x,0)也行,很方便 預設就是繞自軸旋轉

縮放:一般不是通過調焦來實現 否則焦距老變物體畸變效果很醜的,調整鏡頭距離來實現

distance -= input.getaxis("mouse scrollwheel") * 速度平滑因子

往下滾是zoom out distance要增加 所以distance是-=

transform.position = transform.rotation * vector3(0.0, 0.0, -distance) + target.position;

其實只要是純平移操作 都不需要理會目標的因素,直接用:

distance = -input.getaxis("mouse scrollwheel") * 速度平滑因子

transform.translate(0,0,-delta_distance);

就結束了

拖動:數學的理解就是鏡頭角度不變,與原始目標的z方向距離不變,改變鏡頭的x y位移

position_x = -input.getaxis("mouse x")*速度平滑因子;

position_y = -input.getaxis("mouse y") *速度平滑因子;

transform.position = transform.rotation * vector3(position_x, position_y,0) + transform.position;

或者簡單用法:

transform.translate(positon_x,position,0);

這裡距離寫死為當前鏡頭z位移就行了,沒他什麼事 否則就不是平移了

都是2、3行**的事。。。。

要用哪個鍵幹啥 直接外麵包上乙個 if (input.getmousebutton(按鍵編號))判斷就over了

其中繞目標為中心旋轉鏡頭 需要參考目標的位置和鏡頭的旋轉,相對概念上覆雜一些,其他操作都可以無視目標

還有 鏡頭選擇時滑鼠x的位移影響鏡頭的y旋轉,滑鼠y影響x旋轉,很好理解 鏡頭左右轉是繞y軸旋轉,上下轉是繞x軸旋轉 所以 x y要倒一倒

unity 刀塔類鏡頭旋轉,縮放,人物控制等

功能 攝像頭可以圍繞主角進行旋轉,放大,縮小,鏡頭設定了乙個y軸的旋轉極限,保證視角正確。update內進行縮放,並且記錄offsetposition,用於下次位置更新,旋轉時記得弄清楚圍繞哪個物件,哪個軸。呼叫順序 private float distance private bool isscr...

LayaAir Sprite 旋轉縮放

目錄 sprite 旋轉縮放 編碼示例 旋轉 縮放1 sprite 是基本的顯示圖形的顯示列表節點,sprite 預設沒有寬高,預設不接受滑鼠事件。2 通過 graphics 可以繪製或者向量圖,支援旋轉,縮放,位移等操作。3 laya.display.sprite 同時也是容器類,可用來新增多個子...

Unity3D 控制物體移動 旋轉 縮放

1.指定方向移動 移動速度 float translatespeed 10f 表示 向前 transform.translate vector3.forward translatespeed 2.全方向移動 x軸移動速度移動速度 float xspeed 5f z軸移動速度移動速度 float zs...