Unity,動畫狀態機

通過動畫狀態機控制動畫播放:
人物的Inspector的 Animator組件 是進行動畫播放的,【該組件中的Controller屬性即爲 動畫狀態機 !】
在Project中創建一個 Animator Controller (動畫狀態機)—>將其賦值(拖拽)到人物的動畫狀態機上 —>編輯該狀態機(通過在人物的Window->Animator 或 Open Project中的狀態機 打開)—>將靜止動畫,走路動畫,奔跑動畫拉入狀態機中【靜止動畫與 Entry(初始狀態)相連】 , 在Animator中的 Parameters 中添加 Float 的 速度(“speed”)轉換條件 ,通過右鍵3種動畫的Make Transition 創建 [ 聯繫 ]。
如圖:
在這裏插入圖片描述
點擊 [ 聯繫 ],在其Conditions中新增 轉換動畫 時的speed 條件,其中Greater 爲 >,Less 爲 < ,若想使 動畫到達 Conditions的條件時即進行轉換,則需將上方的 Has Exit Time 取消勾選 , 否則 動畫 還需 在持續了Settings 中的Exit Time時間後纔會進行轉換。

將人物移動的實時速度作爲參數傳遞到上圖中的"speed"中:
人物移動的速度由人物移動時依靠的Nav Mesh Agent 組件存儲,要傳遞到Animator 組件的Controller 的 “speed” 中-----> 需要藉助人物Inspector的C#腳本組件:

    public NavMeshAgent agent; //上一篇文章中獲取的Nav Mesh Agent 組件
    public Animator anim;  //獲取Animator組件 --public(作用同前)
    
    void Update () {
 
    /*在Update方法中新增  對Animator組件中的“speed”屬性 賦值 Nav Mesh Agent 組件 的
    velocity(速度屬性)的 magnitude(值的大小)*/
     anim.SetFloat("speed",agent.velocity.magnitude);
    }

將Unity中的Animator組件拖拽賦值給 C#組件的 Anim 屬性中。 —>運行遊戲,人物移動時即可根據速度進行動畫切換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章