網頁

2018年5月25日 星期五

[Unity] 使用按鈕控制舞台上的GameObject使其旋轉


目標
讓舞台上的GameObject受事件驅動(ex.點擊按鈕)而旋轉某個角度

分析
GameObject A是一個實體物件,按鈕B 是一個實體物件,
我想要透過使用按鈕B來控制GameObject A。

1. 幫按鈕B新增一個script,名為bt_left,並設定一個全域變數,
    類別為Animator,用來把GameObject A裏頭已經製作好的Animator指定進去。






2. 由於旋轉的animation,已事先錄製好,
    而且已經使用Animator controller編輯好每個animation切換的驅動條件,
    所以可以直接使用SetTrigger()指定要執行哪一個animation。
    除此之外,Target是全域變數,剛剛已經將Holograms指定給Target,
    所以Target就是要旋轉的物件,Target.SetTrigger("r_0")就可以讓他執行r_0這個animation。

























附註:
在某些情況下,可能希望直接讓Target做旋轉,
而不是事先錄製animation,此時也可以使用以下程式碼。

//Target.transform.rotation = Quaternion.Euler(0f, 72f, 0f); //停在這個旋轉角度上
//Target.transform.Rotate (new Vector3(0f, 72f, 0f)); //每次點擊都旋轉72度,有五個角度

但請記得宣告時將Target類別定義為GameObject

public GameObject Target;

而且旋轉的程式碼需要寫在void update (){}裡面,並註明每隔多久旋轉多少,就可以了。

在此,為了以按鈕驅動旋轉,所以大費周章,
使用了animator controller來控制秀哪一種旋轉角度的動畫。

參考資源 [連結]

沒有留言:

張貼留言