一、Unity物體旋轉幾秒後停止
在遊戲開發中,有時需要讓物體旋轉幾秒後停下來,這裡提供一種簡單的實現方法,可以使用協程來控制停止時間。
1.代碼示例
IEnumerator StopRotation(float stopTime) { yield return new WaitForSeconds(stopTime); isRotating = false; // isRotating為控制物體旋轉的bool變數 }
2.實現步驟
步驟如下:
①在執行物體旋轉操作時啟動協程StopRotation(stopTime),其中stopTime為停止時間,isRotating為控制物體旋轉的bool變數,初始化為True。
②在StopRotation協程中使用「yield return new WaitForSeconds(stopTime)」暫停協程的執行。
③停止時間過後將isRotating設為False,即可停止物體旋轉。
二、Unity物體原地旋轉
在遊戲中實現物體原地旋轉很常見,這裡提供一種簡單的實現方法,使用Transform.Rotate方法。
1.代碼示例
void Update() { transform.Rotate(Vector3.up, Time.deltaTime * rotationSpeed); }
2.實現步驟
步驟如下:
①在Update中調用Transform.Rotate方法,第一個參數為旋轉軸,這裡使用Vector3.up表示繞Y軸旋轉;第二個參數為旋轉速度,這裡使用Time.deltaTime * rotationSpeed計算出來。
②定義一個變數rotationSpeed,可以在代碼中手動賦值或者在Inspector面板中調整。
三、Unity物體旋轉代碼
Unity提供了多種物體旋轉方法,可以在代碼中使用Transform.Rotate、Quaternion.Euler、Quaternion.AngleAxis等方法。
1.Transform.Rotate
常用的物體旋轉方法之一,使用方式上面已經介紹過了。
2.Quaternion.Euler
使用Euler角度來旋轉物體,更加直觀易懂。
(1)代碼示例
transform.rotation = Quaternion.Euler(0, 90, 0);// 繞Y軸旋轉90度
(2)實現步驟
①使用Quaternion.Euler創建一個Quaternion對象,傳入X、Y、Z三個方向的旋轉角度。
②使用transform.rotation將旋轉應用到物體上。
3.Quaternion.AngleAxis
使用旋轉軸和旋轉角度來旋轉物體。
(1)代碼示例
transform.rotation = Quaternion.AngleAxis(90, Vector3.up);// 繞Y軸旋轉90度
(2)實現步驟
①使用Quaternion.AngleAxis創建一個Quaternion對象,第一個參數為旋轉角度,第二個參數為旋轉軸。
②使用transform.rotation將旋轉應用到物體上。
四、Unity物體旋轉180度
將物體旋轉180度可以使用Quaternion.AngleAxis方法繞Y軸旋轉,也可以使用Quaternion.Euler方法繞Y軸和X軸旋轉。
1.Quaternion.AngleAxis
(1)代碼示例
transform.rotation = Quaternion.AngleAxis(180, Vector3.up);
(2)實現步驟
使用Quaternion.AngleAxis方法繞Y軸旋轉180度。
2.Quaternion.Euler
(1)代碼示例
transform.rotation = Quaternion.Euler(0, 180, 0);
(2)實現步驟
使用Quaternion.Euler方法繞Y軸旋轉180度。
五、Unity控制物體旋轉
在遊戲中常常需要控制物體的旋轉,可以使用Input.GetAxis來控制物體的旋轉速度。
1.代碼示例
void Update() { float rotateSpeed = Input.GetAxis("Horizontal"); transform.Rotate(Vector3.up, Time.deltaTime * rotateSpeed * rotationSpeed); }
2.實現步驟
步驟如下:
①定義變數rotateSpeed,使用Input.GetAxis來獲取水平軸的輸入值,區間為[-1,1]。
②在Update中調用Transform.Rotate方法,計算旋轉速度為Time.deltaTime * rotateSpeed * rotationSpeed,rotationSpeed為控制物體旋轉速度的變數。
六、Unity點擊按鈕物體旋轉
在遊戲中可以使用按鈕來控制物體的旋轉,這裡提供一種簡單的實現方法。
1.代碼示例
public void OnClickRotateButton() { transform.Rotate(Vector3.up, 90); }
2.實現步驟
步驟如下:
①定義一個公共的方法OnClickRotateButton(),使用public修飾符。
②在方法內部使用Transform.Rotate方法繞Y軸旋轉90度。
③在按鈕組件中添加OnClick事件,並將OnClick事件關聯到OnClickRotateButton()方法上。
七、Unity勻速旋轉
在遊戲中需要實現勻速旋轉,可以使用Lerp函數來實現。
1.代碼示例
void Update() { float currentRotation = Mathf.Lerp(0, 360, rotateTime / totalRotateTime); transform.eulerAngles = new Vector3(0, currentRotation, 0); rotateTime += Time.deltaTime; if(rotateTime > totalRotateTime) { rotateTime = 0; } }
2.實現步驟
步驟如下:
①定義兩個變數:rotateTime為當前旋轉時間,totalRotateTime為旋轉總時間。
②在Update中使用Mathf.Lerp函數計算當前旋轉角度。
③將旋轉角度賦值給transform.eulerAngles。
④每幀更新rotateTime,當rotateTime超過totalRotateTime時,將rotateTime歸零,重新開始旋轉。
八、Unity物體旋轉角度
有時需要獲取物體旋轉的角度,可以使用transform.eulerAngles、Quaternion.eulerAngles、Quaternion.Angle等方法。
1.transform.eulerAngles
(1)代碼示例
float yRotation = transform.eulerAngles.y;
(2)實現步驟
使用transform.eulerAngles獲取物體繞各個軸的當前旋轉角度,這裡只獲取繞Y軸的旋轉角度。
2.Quaternion.eulerAngles
(1)代碼示例
float yRotation = Quaternion.Euler(0, 90, 0).eulerAngles.y;
(2)實現步驟
使用Quaternion.Euler方法創建一個Quaternion對象,然後使用Quaternion.eulerAngles獲取物體繞各個軸的旋轉角度,這裡只獲取繞Y軸的旋轉角度。
3.Quaternion.Angle
(1)代碼示例
float angle = Quaternion.Angle(transform.rotation, targetRotation);
(2)實現步驟
使用Quaternion.Angle方法計算兩個Quaternion對象之間的旋轉角度。
九、Unity物體旋轉90度
將物體旋轉90度可以使用Quaternion.Euler、Quaternion.AngleAxis等方法。
1.Quaternion.Euler
(1)代碼示例
transform.rotation *= Quaternion.Euler(0, 90, 0);// 繞Y軸旋轉90度
(2)實現步驟
使用Transform.rotation屬性和Quaternion.Euler方法,將旋轉應用到物體上。
2.Quaternion.AngleAxis
(1)代碼示例
transform.rotation *= Quaternion.AngleAxis(90, Vector3.up);// 繞Y軸旋轉90度
(2)實現步驟
使用Transform.rotation屬性和Quaternion.AngleAxis方法,將旋轉應用到物體上。
十、Unity物體旋轉後坐標軸選取
在物體旋轉後,坐標軸的方向也會發生變化,需要根據物體的局部坐標系或世界坐標系來重新選擇坐標軸。
1.局部坐標系
(1)代碼示例
void Update() { transform.Rotate(transform.up, Time.deltaTime * rotationSpeed, Space.Self); }
(2)實現步驟
使用Transform.up來選擇物體的上方向,並使用Space.Self來指定旋轉使用的坐標係為物體自身坐標系。
2.世界坐標系
(1)代碼示例
void Update() { transform.Rotate(Vector3.up, Time.deltaTime * rotationSpeed, Space.World); }
(2)實現步驟
使用Vector3.up來選擇世界坐標系的Y軸方向,並使用Space.World來指定旋轉使用的坐標係為世界坐標系。
原創文章,作者:XDWQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135987.html