1,Transform旋轉
transform.Rotate(X, Y, Z);//分別繞X,Y,Z軸旋轉,可寫為繞某個軸旋轉,栗子transform.Rotate(0, 90, 0);
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轉向
- SetFromToRotation從from到to的旋轉
- SetLookRotation注視旋轉
- Slerp球形插值
- this [int index]操作索引
- ToAngleAxis 轉換一個旋轉用“角-軸”表示。
- ToString轉字符串
- w組件
- x組件
- y組件
- z組件
從以上可以看出我們既可以按角-軸旋轉也可以根據向量計算出要旋轉的角度
平滑旋轉:
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指的是世界空間,不論你物體在什么位置,只要接近指定的軸方向,旋轉會變的更靈活。
5,DoTween旋轉
transform.DoLocalRotate();
transform.DoRotate();//函數記不大清楚了,應該就這兩個,不清楚的可以在查下
unity中旋轉rotation默認是以四元數存儲的,按我們的習慣是歐拉角,通常需要將歐拉角轉為四元數