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

發表日期:
2022.03.20
/
分類:
圓周繞行至少有兩種方式可以實現,一是利用 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;

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

執行測試

參考資料

comments powered by Disqus