天天看點

unity3d之關于旋轉的一些筆記

轉載 https://www.cnblogs.com/hellozzz/p/4179072.html

侵删!

記錄一下學習的一些筆記,友善以後的查閱!

1.最簡單的旋轉代碼,隻需要輸入旋轉的軸向和旋轉速度就可以實作自身的旋轉了

this.transform.Rotate (Vector3.up * rotaSpeed);

2.圍繞某個點的旋轉,參數分别是 1.需要圍繞的點 2.旋轉的軸向 3.旋轉的速度

this.transform.RotateAround (Vector3.zero, Vector3.up, rotaSpeed);

3.旋轉的角度

rotaSpeed += Input.GetAxis(“Horizontal”);

transform.eulerAngles = new Vector3(0, rotaSpeed, 0);

4.旋轉的角度

float tiltAroundZ = Input.GetAxis(“Horizontal”)*30;

float tiltAroundX = Input.GetAxis(“Vertical”)*30;

Quaternion target = Quaternion.Euler(tiltAroundX, 0, tiltAroundZ);

transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * 2);

3和4方法個人認為沒有本質上的差別,隻是修改的方法不同了而已。

直接修改eulerAngles屬性的話,可先配置一個需要旋轉的角度,這個角度是可變的,再執行個體化一個三維向量再需要旋轉的軸輸入先前配置好的角度就可以了。

希望修改rotation的話需要使用四元數quaternion進行配置,最後對rotation角度進行插值slerp。

5. transform.EulerAngles是相對于父物體的,如果父物體(X,Y,Z)不全為0是,就無法達到限制某個旋轉軸進行旋轉;transform.localEulerAngles是相對于子物體,即使父物體(2,90,2)時,transform.localEulerAngles=new vector3(0,90,0)就是Y軸旋轉90度,X,Z軸不變。