文章

添加基本的角色動畫

要為角色添加基本的動畫,需要使用 Unity 的 Animator 系統來管理角色的動畫狀態。這可以包括走路、跑步、跳躍等基本動作。下面是如何在 Unity 中設置和使用基本角色動畫的步驟。

1. 準備動畫素材

步驟 1:導入角色和動畫素材

  1. 導入角色模型和動畫
    • 如果你使用的是外部的角色模型和動畫(如從 Asset Store 或其他資源網站下載的),將這些文件導入到 Unity 的 Assets 資料夾中。
    • 確保模型包含需要的動畫剪輯,例如 Idle(待機)、Walk(走路)、Run(跑步)、Jump(跳躍)等。
  2. 檢查動畫剪輯
    • 選擇導入的角色模型,在 Inspector 視窗中,切換到 Animations 標籤,檢查動畫剪輯的名稱和設置。
    • 確保動畫剪輯的 Loop Time(循環時間)被勾選,以便能夠重複播放(例如走路或跑步動畫)。

2. 創建 Animator Controller

步驟 1:創建 Animator Controller

  1. 創建 Animator Controller
    • Assets 資料夾中,右鍵選擇 Create > Animator Controller,將其命名為 PlayerAnimatorController
  2. 打開 Animator 窗口
    • 在 Unity 主菜單中選擇 Window > Animation > Animator 打開 Animator 窗口。
  3. 設置 Animator Controller
    • PlayerAnimatorController 拖放到角色的 Animator 組件上(在 Inspector 視窗中)。

步驟 2:添加動畫狀態

  1. 添加動畫狀態
    • Animator 視窗中,右鍵點擊空白區域,選擇 Create State > From New Blend Tree,並將其命名為 BlendTree
    • 右鍵點擊空白區域,選擇 Create State > Empty,並添加 IdleWalkRunJump 等狀態。
  2. 設置動畫剪輯
    • 選中每個狀態,在 Inspector 視窗中,將相應的動畫剪輯拖放到 Motion 欄位中。
    • 例如,將 Idle 動畫剪輯分配到 Idle 狀態,Walk 動畫剪輯分配到 Walk 狀態,依此類推。

3. 設定動畫過渡

步驟 1:創建過渡

  1. 設置過渡條件
    • Animator 視窗中,右鍵點擊 Idle 狀態,選擇 Make Transition,然後點擊 Walk 狀態。
    • 重複這個步驟,創建從 WalkRunJump 的過渡,以及返回的過渡。
  2. 設置過渡條件
    • 選擇每個過渡,在 Inspector 視窗中設置過渡條件。
    • 例如,為 IdleWalk 過渡設置一個 Speed > 0.1 的條件,為 WalkRun 設置 Speed > 1.0 的條件。

步驟 2:添加參數

  1. 添加動畫參數
    • Animator 視窗的左側,點擊 Parameters 標籤,然後點擊 + 按鈕,選擇 Float,命名為 Speed
    • 重複添加其他需要的參數(如 isJumping)。
  2. 將參數應用於過渡
    • 為每個過渡設置參數條件。例如,當 Speed 大於一定值時,過渡到 Walk 狀態;當 isJumpingtrue 時,過渡到 Jump 狀態。

4. 編寫控制腳本

步驟 1:修改角色控制腳本

  1. 編寫角色動畫控制邏輯
    • 修改角色控制腳本 (PlayerMovement) 來根據角色的速度或其他狀態來設置 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    
    using UnityEngine;
    
    [RequireComponent(typeof(CharacterController))]
    public class PlayerMovement : MonoBehaviour
    {
        public float speed = 6.0f;
        public float gravity = -9.81f;
        public float jumpHeight = 1.5f;
        public float mouseSensitivity = 100f;
    
        private CharacterController controller;
        private Vector3 velocity;
        private bool isGrounded;
        private Animator animator;
    
        void Start()
        {
            controller = GetComponent<CharacterController>();
            animator = GetComponent<Animator>();
            Cursor.lockState = CursorLockMode.Locked;
        }
    
        void Update()
        {
            isGrounded = controller.isGrounded;
    
            if (isGrounded && velocity.y < 0)
            {
                velocity.y = -2f;
            }
    
            // 獲取輸入
            float moveX = Input.GetAxis("Horizontal");
            float moveZ = Input.GetAxis("Vertical");
            Vector3 move = transform.right * moveX + transform.forward * moveZ;
    
            // 移動角色
            controller.Move(move * speed * Time.deltaTime);
    
            // 更新動畫參數
            animator.SetFloat("Speed", move.magnitude);  // 設置速度參數
    
            if (Input.GetButtonDown("Jump") && isGrounded)
            {
                velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
                animator.SetBool("isJumping", true);  // 設置跳躍參數
            }
            else
            {
                animator.SetBool("isJumping", false);
            }
    
            // 重力影響
            velocity.y += gravity * Time.deltaTime;
            controller.Move(velocity * Time.deltaTime);
    
            // 角色旋轉
            float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
            transform.Rotate(Vector3.up * mouseX);
        }
    }
    
  2. 附加腳本
    • 確保將此腳本附加到角色物件上,並且角色物件具有 Character ControllerAnimator 組件。

5. 測試動畫控制

  1. 播放測試
    • 點擊 Play,使用鍵盤控制角色移動,檢查動畫是否根據移動和跳躍狀態正確播放。
  2. 調整動畫參數
    • 根據測試結果,調整過渡條件和參數的範圍,以獲得更自然的動畫效果。

6. 小結

通過這些步驟,你可以成功地為角色添加基本的動畫控制。這些動畫能夠根據角色的移動速度和動作狀態動態切換,提供更真實和沉浸式的遊戲體驗。隨著你的需求變化,可以進一步擴展和優化動畫系統,添加更多的動作和細節。

本文章以 CC BY 4.0 授權