這次要來談使用腳本轉換Animator下的動畫,首先看到Animator的編輯視窗,點擊Parameters,按下+按鈕可以建立變數。
可建立的變數有Float、Int、Bool和Trigger,變數右邊欄位可以設定初始值,之後會透過改變這裡的變數數值,做動畫的轉換。
建立好轉換變數後,點擊要用腳本控制的轉換箭頭,由於接下的動畫轉換是由變數作條件,所以將Has Exit Time的打勾取消,另外這裡不做動畫間的過渡,將Transition Duration設為0。
再來看到Conditions的地方,按+按鈕新增轉換的條件,新增後可以看到三個欄位,依左至右分別是變數、條件和數值,以下圖的設定float, Greater, 2.0為例,也就是當變數float大於2.0時,這個動畫轉換就會執行。
上述動作結束後,轉換條件就算是建立好了,接下來就是透過控制變數的數值做動畫轉換,點擊動畫物件,這裡使用C#,新增控制腳本,AnimatorControl.cs。
下面是腳本內容:
using UnityEngine; public class AnimatorControl : MonoBehaviour { private Animator animator;//(1) private float f;//(2) void Start () {//(3) animator = GetComponent<Animator>(); f = 0; } void Update () { if (Input.GetKey(KeyCode.D)) { f += Time.deltaTime;//(4) } animator.SetFloat("float", f);//(5) } }(1)宣告Animator變數,用來抓取動畫物件下的Animator。
(2)宣告float變數f,用來做Animator下變數的設定。
(3)初始化上面兩個變數。
(4)按下鍵盤D增加變數f的數值。
(5)透過SetFloat將變數f的值帶入Animator下的float變數。
以下是執行結果:
這裡我補了按鈕和數值顯示可以看得比較清楚,從動畫Move轉換到Rotate的條件是float變數大於2.0,Rotate到Color條件是float變數大於4.0。
這次就差不多到這裡,最後再稍微做些補充,這次變數是使用鍵盤控制,當然根據狀況不同,可能會是遊戲時間、物件碰撞等等狀況來控制,另外這次只使用到浮點數,整數的條件和浮點數大同小異,但多了一個等於的條件,而布林變數就是true與false,至於trigger目前還沒碰過,之後會找機會試試,下一篇預計是Animator內預設的三個狀態。
延伸閱讀:
【Unity】Animator2D動畫切換 - 待機>行走>跑步
Part5
不好意思請問沒有SetFloat這個方法怎麼半
回覆刪除