U3D旋轉操作

1、Transform旋轉

  transform.Rotate(0, 90, 0);//分別繞X,Y,Z軸旋轉

  transform.Rotate(Vector3.right * Time.deltaTime);//以歐拉角旋轉,順序是ZXY,right是向X軸旋轉1度

  transform.Rotate(0, 45, 0, Space.World);//繞世界座標系的XYZ軸旋轉,也就是其頂層父物體的座標系,如果自身在頂層則沒有區別,並不是繞點旋轉,而是不按照自身的座標系旋轉

  transform.Rotate(Vector3.up, Space.Self);//繞自身座標系旋轉,這是默認的

  transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);//繞點旋轉,旋轉軸,角度

  transform.rotation = Quaternion.identity;//旋轉可由四元數直接指定

transform.eulerAngles = new Vector3(angle);//由歐拉角直接指定

自動旋轉:

update中旋轉並配合Time.deltaTime即可

 

2.Quaternion四元數

· AngleAxis(angle : float, axis : Vector3) 繞axis軸旋轉angle,創建一個旋轉。

· Angle (a : Quaternion,b : Quaternion)  返回a和b兩者之間的角度。

· Dot點乘 用法同上

· eulerAngles  返回表示旋轉的歐拉角度。

· Euler (x : float,y : float, z : float) 用於返回一個指定的歐拉角,需要使用歐拉角表示旋轉時很有用

· FromToRotation (fromDirection :Vector3,toDirection : Vector3) 從from到to創建一個旋轉(計算出旋轉的四元數)

· identity相當於“無旋轉”:即這個物體完全對齊於世界或父軸。

· Inverse  返回反向的旋轉。

· Lerp插值

· LookRotation注視旋轉

· operator !=運算符 不等於

· operator *運算符 乘法

· operator ==運算符 等於

· Quaternion構造四元數

· RotateTowards轉向

· SetFromToRotationfrom到to的旋轉

· SetLookRotation注視旋轉

· Slerp球形插值

· this [int index]操作索引

· ToAngleAxis  轉換一個旋轉用“角-軸”表示。

· ToString轉字符串

· wW組件

· xX組件

· yY組件

· zZ組件

從以上可以看出我們既可以按角-軸旋轉也可以根據向量計算出要旋轉的角度

 

平滑旋轉:

transform.rotation = Quaternion.Slerp (from : Quaternion, to : Quaternion,Time.fixedTime* smooth);

Lerp插值比Slerp更快但是如果旋轉較遠看起來就比較差。

 

注視旋轉:

Quaternion LookRotation(Vector3 forward, Vector3 upwards);

創建一個旋轉,沿着forward(z軸)並且頭部沿着upwards(y軸)的約束注視。 也就是建立一個旋轉,使z軸朝向forward,y軸朝向up。

所得的結果是 forward爲目標朝向時的旋轉角,用於控制角色旋轉很有用

 

3.剛體旋轉

rigidbody.MoveRotation (rot : Quaternion)

對於運動學剛體,它基於剛體的運動應用摩擦力。模擬剛體的旋轉。

如果你想其他的剛體與運動學剛體交互,你需要在FixedUpdate函數中使用它。

 

4.注視

transform.LookAt (target : Transform, worldUp : Vector3 = Vector3.up) 

旋轉物體使z軸(forward)指向目標物體。

當該物體設置了LookAt並指定了目標物體時,該物體的z軸將始終指向目標物體,在設置了worldUp軸向時,該物體在更接近指定的軸向是旋轉便的靈活,注意worldUp指的是世界空間,不論你物體在什麼位置,只要接近指定的軸方向,旋轉會變的更靈活。

 

另記:unity中旋轉rotation默認是以四元數存儲的,按我們的習慣是歐拉角,通常需要將歐拉角轉爲四元數

 

發佈了43 篇原創文章 · 獲贊 0 · 訪問量 5994
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章