文章

了解 過渡(Transitions) 與 動畫參數

在Unity中,過渡(Transitions)動畫參數(Animation Parameters) 是動畫系統的重要部分,它們可以幫助你實現動畫之間的順暢切換和控制。這些概念允許更靈活和動態的動畫控制,尤其是在角色的不同動作之間進行切換時。以下是這些概念的詳細介紹及其使用方法。

1. 過渡 (Transitions)

過渡 是指從一個動畫狀態切換到另一個動畫狀態的過程。當你需要在不同的動畫之間切換時,例如從待機狀態切換到走路狀態,過渡就會發揮作用。

設置過渡的步驟

  1. 打開 Animator 視圖
    • Hierarchy 視圖中選擇一個帶有 Animator 組件的物體,然後打開 Animator 視圖來設置動畫過渡。
  2. 創建過渡
    • Animator 視圖中,右鍵單擊一個動畫狀態(例如 Idle 狀態),選擇 Make Transition,然後將箭頭拖動到另一個狀態(例如 Walk 狀態)。這樣你就創建了一個從 IdleWalk 的過渡。
  3. 設置過渡屬性
    • 選中剛剛創建的過渡箭頭,在 Inspector 視圖中,你可以設置過渡的屬性,例如:
      • Transition Duration:過渡的持續時間,即從一個動畫狀態完全切換到另一個狀態所需的時間。通常,這個值越小,過渡就越快和突兀;值越大,過渡就越平滑。
      • Has Exit Time:如果勾選了這個選項,動畫將在播放完指定的比例後才會過渡到下一個狀態。這可以保證當前動畫的完整性。
      • Conditions:過渡的條件。你可以設置基於動畫參數的條件來觸發過渡,這在下一部分詳細解釋。

2. 動畫參數 (Animation Parameters)

動畫參數 是用來控制動畫狀態之間過渡的變量。這些參數可以是 FloatIntBoolTrigger 類型,並可以在腳本中動態更改,以影響動畫的行為。

設置動畫參數的步驟

  1. 添加動畫參數
    • Animator 視圖中,點擊左側的 Parameters 標籤,然後點擊 + 按鈕添加一個新的參數。你可以選擇以下幾種類型:
      • Float:浮點數,適用於需要表示連續數值的參數(例如角色速度)。
      • Int:整數,適用於需要表示離散值的參數(例如不同狀態的代碼)。
      • Bool:布爾值,適用於需要表示開/關、是/否的參數(例如角色是否在地面上)。
      • Trigger:觸發器,適用於一次性事件的觸發(例如跳躍動作)。
  2. 設置過渡條件
    • 在過渡的 Inspector 視圖中,你可以添加 Conditions 來設置過渡的條件。這些條件基於剛剛創建的動畫參數。例如:
      • 設置一個 Float 參數 Speed,並設置條件為 Speed > 0.1,當這個條件為真時,過渡會觸發。
      • 設置一個 Bool 參數 isJumping,並設置條件為 isJumping == true,當這個條件為真時,過渡會觸發。
  3. 在腳本中控制動畫參數
    • 通過C#腳本,你可以動態改變動畫參數的值,從而控制動畫的過渡。以下是範例腳本:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    using UnityEngine;
    
    public class PlayerController : MonoBehaviour
    {
        private Animator animator;
        private float speed;
    
        void Start()
        {
            animator = GetComponent<Animator>(); // 獲取Animator組件
        }
    
        void Update()
        {
            // 控制角色移動並設置動畫參數
            speed = Input.GetAxis("Horizontal"); // 獲取水平輸入
            animator.SetFloat("Speed", Mathf.Abs(speed)); // 設置Speed參數
    
            // 控制跳躍並設置動畫參數
            if (Input.GetKeyDown(KeyCode.Space))
            {
                animator.SetTrigger("Jump"); // 設置Jump觸發器
            }
        }
    }
    

解釋

  • SetFloat(“Speed”, value):將 Speed 參數設置為當前角色移動的速度。當 Speed 大於一定值時,動畫過渡將從 Idle 切換到 Walk
  • SetTrigger(“Jump”):觸發 Jump 動作。這是一次性事件,例如當角色按下空格鍵跳躍時。

3. 測試與調整

步驟

  1. 運行場景
    • 點擊 Play 按鈕運行場景,測試角色的動畫過渡是否如預期運行。
  2. 調整參數
    • 根據觀察,回到 Animator 視圖調整過渡時間、條件或動畫參數的值,以實現更平滑的動畫過渡。

小結

掌握 過渡動畫參數 可以讓你在Unity中創建更豐富和自然的動畫系統。通過設置和調整這些過渡及參數,你可以確保角色的動作更加流暢,並且能夠響應各種遊戲事件和玩家輸入。這是創建高質量遊戲體驗的重要步驟。

本文章以 CC BY 4.0 授權