Unity Mecanim Cách phát hoạt hình trên phím nhấn

Mecanim là một công cụ do trạng thái điều khiển dành cho Unity cung cấp cho nhà phát triển khả năng kiểm soát hoạt ảnh nâng cao và trình chỉnh sửa giàu tính năng.

Các tính năng nổi bật của Mecanim là trộn hoạt ảnh và nhắm mục tiêu lại hoạt ảnh.

Trộn hoạt ảnh là một quá trình tự động thực hiện chuyển tiếp mượt mà giữa các hoạt ảnh.

Nhắm mục tiêu lại hoạt ảnh là một quá trình tái sử dụng các hoạt ảnh hiện có để hoạt động giữa nhiều giàn nhân vật, loại bỏ nhu cầu tạo hoạt ảnh mới cho mỗi nhân vật mới.

Trong hướng dẫn này, tôi sẽ hướng dẫn cách Tạo hoạt ảnh cho khối lập phương và chơi Hoạt hình trên phím nhấn bằng Mecanim.

bước

Để tạo hiệu ứng cho Khối lập phương trong Unity, hãy làm theo các bước bên dưới:

  • Tạo khối mới (GameObject -> Đối tượng 3D -> Khối)

  • Chọn Cube sau đó mở cửa sổ Animation (Window -> Animation -> Animation)
  • Trong cửa sổ Hoạt hình, hãy nhấp vào "Create", thao tác này sẽ tạo hoạt ảnh mới, Bộ điều khiển hoạt hình mới và sẽ đính kèm thành phần Hoạt hình vào Khối.
  • Đặt tên cho hoạt hình mới "SpinAnimation"

  • Trong Cửa sổ Hoạt hình Nhấp vào AddProperty -> Transform -> Rotation
  • Hoạt hình này sẽ có 2 khung hình, bắt đầu và kết thúc.
  • Đối với khung đầu tiên, chúng tôi đặt xoay thành (0, 0, 0)

  • Đối với khung cuối cùng, chúng tôi đặt xoay thành (0, 360, 0)

Hoạt hình đã sẵn sàng.

Mẹo: Để tạo thêm hoạt ảnh, chỉ cần nhấp vào tên hoạt ảnh trong cửa sổ Hoạt ảnh rồi nhấp vào "Create new Clip...".

Để thiết lập Mecanim Animator Controller, hãy làm theo các bước dưới đây:

  • Nhấp đúp vào nội dung Bộ điều khiển hoạt hình đã được tạo bằng hoạt ảnh

  • Cửa sổ mới có tiêu đề "Animator" sẽ xuất hiện, trông giống như thế này:

  • Bạn sẽ nhận thấy có một mũi tên chỉ từ "Entry" đến "SpinAnimation", có nghĩa là hoạt ảnh sẽ phát ngay khi Cảnh bắt đầu, nhưng đó không phải là điều chúng tôi muốn, chúng tôi chỉ muốn phát hoạt ảnh khi nhấn phím.

Vì Mecanim yêu cầu phải có hoạt ảnh mục nhập, nên điều chúng ta có thể làm là tạo trạng thái Trống mới và biến nó thành Mục nhập:

  • Nhấp chuột phải vào cửa sổ Animator -> Tạo trạng thái -> Làm trống:

  • Chọn Entry state -> Chuột phải vào nó -> Set StateMachine Default State, sau đó trỏ tới "New State":

Điều cuối cùng còn lại phải làm là thực hiện chuyển đổi sang SpinAnimation, nhưng chúng tôi chỉ muốn thực hiện chuyển đổi khi đáp ứng được điều kiện cụ thể, đó là khi Tab Tham số xuất hiện:

  • Bấm vào tab Tham số trong cửa sổ Animator rồi bấm vào biểu tượng (+):

Bạn sẽ nhận thấy có nhiều loại có sẵn, nhưng hiện tại, chúng tôi sẽ chọn Trigger, nó tương tự như bool nhưng không giống bool, nó tự động đặt thành false sau khi hoạt ảnh hoàn tất, hữu ích cho hoạt ảnh một lần chụp:

  • Đặt tên cho tham số "spinTrigger"

  • Cuối cùng chọn "Any State" -> Click chuột phải vào nó -> Make Transition, sau đó trỏ tới SpinAnimation:

  • Nhấp vào Mũi tên chuyển tiếp và trong Chế độ xem Thanh tra trong Điều kiện, nhấp vào (+) và đảm bảo tham số spinTrigger được chọn

  • Theo mặc định, các hoạt ảnh được tạo bằng Unity đã bật vòng lặp, nhưng vì chúng ta chỉ muốn phát Hoạt ảnh một lần nên điều chúng ta cần làm là chọn Clip Hoạt hình trong chế độ xem Dự án và sau đó bỏ chọn hộp kiểm Thời gian vòng lặp:

Để có thể điều khiển các thông số Mecanim từ script, chúng ta sẽ cần sử dụng các hàm đặc biệt, kiểm tra đoạn code bên dưới:

  • Tạo một tập lệnh mới, đặt tên là "AnimationTest", xóa mọi thứ khỏi tập lệnh rồi dán đoạn mã bên dưới vào trong tập lệnh đó:

AnimationTest.cs

using UnityEngine;

public class AnimationTest : MonoBehaviour
{

    Animator animator;

    // Start is called before the first frame update
    void Start()
    {
        //Get Animator component
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //Play spin animation on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            animator.SetTrigger("spinTrigger");
        }
    }
}
  • Đính kèm tập lệnh AnimationTest.cs vào Cube bằng thành phần Animator:

Bây giờ hãy kiểm tra nó:

Sharp Coder Trình phát video

Mọi thứ hoạt động như mong đợi, nhấn Q sẽ phát hoạt ảnh.

Bài viết được đề xuất
Xây dựng hệ thống menu tương tác trong Unity
Cách vẽ cây trên địa hình trong Unity
Cách nhập ảnh động vào Unity
Cách tạo một trò chơi lấy cảm hứng từ FNAF trong Unity
So sánh môi trường phát triển 2D và 3D trong Unity
Hướng dẫn về Unity Cinemachine và Timeline
Hướng dẫn sử dụng gamepad cho Unity