[Unity] 使用 transform.RotateAround 實現圓周繞行

2022.03.20 / Unity 引擎
圓周繞行至少有兩種方式可以實現,一是利用 Unity 父子物件相對位置固定的特性,以旋轉父物件來達到目的,另一個就是本篇將提到的「transform.R

圓周繞行至少有兩種方式可以實現,一是利用 Unity 父子物件相對位置固定的特性,以旋轉父物件來達到目的,另一個就是本篇將提到的「transform.RotateAround」語法。

語法說明

transform.RotateAround(圓心座標, 繞行軸向, 角度);

如果我們指定物件要繞行的圓的圓心為 (0, 0, 0),且以 Z 為軸向旋轉,可以寫成這樣 (放在 Update 中):

transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 0, 1), 360 * Time.deltaTime);

軸向也能給斜的,只不過在開發 2D 遊戲時不太會用到。

最後面表示角度的 360 * Time.deltaTime 是代表一秒轉一圈,我們可以額外乘上一個變數來控制速度。當這個角度參數為正時會逆時鐘旋轉,小於零時順時鐘。

transform.RotateAround(Vector3.zero, Vector3.forward, 360 * Time.deltaTime * Speed);

另外,因為 transform.RotateAround 會直接動到物件的旋轉角度,如果想要將它固定的話可以直接在下一行改回來。

transform.right = Vector3.right;

改回來後就不會再旋轉了。

執行測試

參考資料

相關文章

Ted Liou

雲科碩士在讀中,專注於 Unity C#、TouchDesigner 技術,常把技術筆記分享到部落格,偶爾還直接挪用文章來當教材的研究生。