添加基本的角色動畫
要為角色添加基本的動畫,需要使用 Unity 的 Animator
系統來管理角色的動畫狀態。這可以包括走路、跑步、跳躍等基本動作。下面是如何在 Unity 中設置和使用基本角色動畫的步驟。
1. 準備動畫素材
步驟 1:導入角色和動畫素材
- 導入角色模型和動畫
- 如果你使用的是外部的角色模型和動畫(如從 Asset Store 或其他資源網站下載的),將這些文件導入到 Unity 的
Assets
資料夾中。 - 確保模型包含需要的動畫剪輯,例如
Idle
(待機)、Walk
(走路)、Run
(跑步)、Jump
(跳躍)等。
- 如果你使用的是外部的角色模型和動畫(如從 Asset Store 或其他資源網站下載的),將這些文件導入到 Unity 的
- 檢查動畫剪輯
- 選擇導入的角色模型,在
Inspector
視窗中,切換到Animations
標籤,檢查動畫剪輯的名稱和設置。 - 確保動畫剪輯的
Loop Time
(循環時間)被勾選,以便能夠重複播放(例如走路或跑步動畫)。
- 選擇導入的角色模型,在
2. 創建 Animator Controller
步驟 1:創建 Animator Controller
- 創建 Animator Controller
- 在
Assets
資料夾中,右鍵選擇Create > Animator Controller
,將其命名為PlayerAnimatorController
。
- 在
- 打開 Animator 窗口
- 在 Unity 主菜單中選擇
Window > Animation > Animator
打開Animator
窗口。
- 在 Unity 主菜單中選擇
- 設置 Animator Controller
- 將
PlayerAnimatorController
拖放到角色的Animator
組件上(在Inspector
視窗中)。
- 將
步驟 2:添加動畫狀態
- 添加動畫狀態
- 在
Animator
視窗中,右鍵點擊空白區域,選擇Create State > From New Blend Tree
,並將其命名為BlendTree
。 - 右鍵點擊空白區域,選擇
Create State > Empty
,並添加Idle
、Walk
、Run
和Jump
等狀態。
- 在
- 設置動畫剪輯
- 選中每個狀態,在
Inspector
視窗中,將相應的動畫剪輯拖放到Motion
欄位中。 - 例如,將
Idle
動畫剪輯分配到Idle
狀態,Walk
動畫剪輯分配到Walk
狀態,依此類推。
- 選中每個狀態,在
3. 設定動畫過渡
步驟 1:創建過渡
- 設置過渡條件
- 在
Animator
視窗中,右鍵點擊Idle
狀態,選擇Make Transition
,然後點擊Walk
狀態。 - 重複這個步驟,創建從
Walk
到Run
、Jump
的過渡,以及返回的過渡。
- 在
- 設置過渡條件
- 選擇每個過渡,在
Inspector
視窗中設置過渡條件。 - 例如,為
Idle
到Walk
過渡設置一個Speed > 0.1
的條件,為Walk
到Run
設置Speed > 1.0
的條件。
- 選擇每個過渡,在
步驟 2:添加參數
- 添加動畫參數
- 在
Animator
視窗的左側,點擊Parameters
標籤,然後點擊+
按鈕,選擇Float
,命名為Speed
。 - 重複添加其他需要的參數(如
isJumping
)。
- 在
- 將參數應用於過渡
- 為每個過渡設置參數條件。例如,當
Speed
大於一定值時,過渡到Walk
狀態;當isJumping
為true
時,過渡到Jump
狀態。
- 為每個過渡設置參數條件。例如,當
4. 編寫控制腳本
步驟 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); } }
- 修改角色控制腳本 (
- 附加腳本
- 確保將此腳本附加到角色物件上,並且角色物件具有
Character Controller
和Animator
組件。
- 確保將此腳本附加到角色物件上,並且角色物件具有
5. 測試動畫控制
- 播放測試
- 點擊
Play
,使用鍵盤控制角色移動,檢查動畫是否根據移動和跳躍狀態正確播放。
- 點擊
- 調整動畫參數
- 根據測試結果,調整過渡條件和參數的範圍,以獲得更自然的動畫效果。
6. 小結
通過這些步驟,你可以成功地為角色添加基本的動畫控制。這些動畫能夠根據角色的移動速度和動作狀態動態切換,提供更真實和沉浸式的遊戲體驗。隨著你的需求變化,可以進一步擴展和優化動畫系統,添加更多的動作和細節。
本文章以 CC BY 4.0 授權