文章

介紹Animator和動畫控制器

在Unity中,Animator動畫控制器 (Animator Controller) 是用來控制遊戲物體動畫的關鍵工具。它們能夠幫助你實現角色的各種動作切換,例如行走、跳躍、攻擊等。

1. Animator 的基本概念

  • AnimatorAnimator 組件是用來控制遊戲物體的動畫播放的。當你將 Animator 添加到物體上時,這個物體就能夠根據你設計的動畫控制器來播放動畫。

  • Animation ClipAnimation Clip 是具體的動畫文件,表示一個動作的過程,例如角色的行走、跳躍等。你可以在 Unity 中創建或導入 Animation Clip,然後將它們分配給 Animator 來控制動畫的播放。

  • Animator ControllerAnimator Controller 是一個資產文件,它定義了動畫之間的轉換邏輯。你可以在其中設置不同的動畫狀態,以及這些狀態之間的轉換條件(如按下按鍵或達到某種速度)。

2. 設置 Animator 和 Animator Controller

步驟

  1. 創建 Animator Controller
    • Assets 資料夾中右鍵選擇 Create > Animator Controller,並給它取一個名字,比如 PlayerAnimator
    • 雙擊打開 PlayerAnimator,這將打開 Animator 視圖,你可以在這裡設置動畫狀態和轉換。
  2. 創建並導入 Animation Clips
    • 如果你已經有了動畫文件(例如從外部導入的 .anim 文件),可以直接將它們拖入 Animator 視圖中。
    • 如果你想在Unity中創建自己的動畫,可以在 Hierarchy 視圖中選擇一個物體,然後打開 Animation 視圖,點擊 Create 來創建一個新的 Animation Clip
  3. 設置動畫狀態
    • Animator 視圖中,你可以看到一個默認狀態 Any State 和一個 Entry 點。你可以將創建好的 Animation Clips 拖動到這裡,這些動畫將成為角色的狀態(例如 IdleWalkJump 等)。
    • 每個狀態代表角色的一個動畫。你可以設置其中一個狀態為默認狀態(即角色進入場景時會首先播放的動畫),通過右鍵單擊該狀態並選擇 Set as Layer Default State
  4. 設置狀態轉換
    • 你可以右鍵單擊某個狀態,然後選擇 Make Transition,將箭頭拖動到另一個狀態,這樣就建立了一個動畫狀態之間的轉換。
    • 選擇轉換箭頭,你可以在 Inspector 視圖中設置轉換條件,例如基於一個變量或觸發器來切換動畫。
  5. 設置條件變量
    • Animator 視圖中,點擊左邊的 Parameters 標籤,你可以添加 FloatIntBoolTrigger 變量。
    • 這些變量可以在腳本中進行控制,用來觸發動畫的轉換。例如,你可以添加一個名為 isJumping 的布林值,並將其設置為 True 時觸發跳躍動畫。
  6. 將 Animator Controller 分配給物體
    • 選擇你的角色物體,在 Inspector 視圖中找到 Animator 組件,將創建好的 Animator Controller 拖入 Controller 欄位中。

3. 使用 C# 腳本控制動畫

你可以通過C#腳本來動態控制 Animator 的行為。這在需要根據遊戲邏輯觸發動畫時非常有用。

範例腳本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using UnityEngine;

public class PlayerAnimation : MonoBehaviour
{
    private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>(); // 獲取Animator組件
    }

    void Update()
    {
        // 獲取輸入控制角色的動畫狀態
        float move = Input.GetAxis("Horizontal");
        animator.SetFloat("Speed", Mathf.Abs(move)); // 設置速度參數來控制動畫

        // 控制跳躍動畫
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetTrigger("Jump");
        }
    }
}

解釋

  • SetFloat(“Speed”, value):設置動畫控制器中的 Speed 參數,這個參數可以用來切換 IdleWalk 狀態。例如,當 Speed 大於0時,播放走路動畫;當 Speed 為0時,播放待機動畫。
  • SetTrigger(“Jump”):設置動畫控制器中的 Jump 觸發器,這個觸發器用來切換到跳躍動畫。

4. 測試和調整動畫

  1. 運行場景
    • 點擊 Play 按鈕運行場景,使用鍵盤控制角色並觀察動畫效果。
  2. 調整動畫
    • 如果動畫切換不順暢,返回 Animator 視圖,調整狀態轉換的條件和過渡時間(在 Inspector 視圖中可以調整 Transition Duration)。

小結

AnimatorAnimator Controller 是Unity中強大且靈活的動畫工具。通過設置不同的動畫狀態和轉換條件,並使用腳本控制動畫參數,你可以創建豐富的角色動畫系統,讓你的角色更加生動和具有表現力。理解和掌握這些工具,將極大地提升你的遊戲開發能力。

本文章以 CC BY 4.0 授權