Animator 動畫控制使用 Animator 可以控制各種動畫的播放流程,透過 Animator Controller 動畫控制器,從簡單的移動、旋轉、縮放動畫,到複雜的遊戲角色動畫皆可準確控制。本範例使用 Mixamo 網站免費下載角色與動畫,您可自行製作遊戲角色的模型與動畫。 待機動作 ( Standing Idle, Breathing Idle ) 攻擊動作 ( Standing Melee Attack, Standing Melee Attack Horizontal, Standing Melee Attack 360 High ) 防禦動作 ( Standing Block Idle )
遊戲物件的 Animator Controller 動畫控制器可記錄所有動作狀態對應的動畫檔,以及動作與動作之間的流程,對於遊戲角色複雜的動作控制可提供完整的管理。新增一個動畫控制器,先將 Idle 待機、Walk 走路、 Jump 跳躍動作拖曳加入動畫控制器。
動作狀態按滑鼠右鍵,選擇 Make Transition 建立動作之間的轉換。
玩家角色的「待機」、「行走」、「跳躍」動作之間,執行 Make Transition 建立雙向的轉換。
按下 Play 測試遊戲,發現動作出現未循環撥放動畫、或是位置不正常移動或轉向的問題,解決方法如下:
為了稍後透過腳本控制不同動畫的轉換,在動畫控制器中新增 Walk 參數來控制「行走」的動畫。
設定動畫轉換的條件,並取消 Has Exit Time 讓符合條件時立即轉換動作,無需等候目前動作的結束。
建立一個用於控制玩家角色的 PlayerController 腳本,取得 Animator 動畫元件,使用方向鍵移動時播放行走動畫。
製作玩家角色受到攻擊的 Damage 動作,當血量低於 0% 時將會播放 Death 動作。 受到攻擊 ( Big Rib Hit, Head Hit, Standing Death Left01... )
將 Damage 與 Death 動作拖曳到動畫控制器,並且加上適當的動畫轉換,並可透過腳本加入動作條件,例如玩家輸入時播放動畫,或是碰撞時播放動畫。使用 OnCollisionEnter 控制物件碰撞時播放特定的動畫。
目前的問題是當玩家角色接觸地板時,也會出現 Damage 受傷動作,使用 if 判斷只有 Tag = “Bullet” 的物件碰撞才出現動作。
加入計算血量的程式碼,當血量低於 0 的時候播放 Death 動畫。
建立角色的控制腳本。
設定動作的轉換條件,記得取消 Has Exit Time 否則轉換時必須等待目前的動作完成。
|