Trang chủ » Blog » Sử dụng DOTween Unity để tạo chuyển động mượt mà cho Game

Sử dụng DOTween Unity để tạo chuyển động mượt mà cho Game

bởi CodeGym | 23/07/2024 09:37 | Blog

Để xây dựng các chuyển động phức tạp trong game, chúng ta nên sử dụng các thư viện có sẵn. DOTween là một thư viện miễn phí giúp thực hiện animation trong Unity3D nhanh chóng. Sử dụng DOTween Unity nhanh hơn gần 400% so với công cụ HOTween. Ngoài ra, DOTween có thêm nhiều tính năng nâng cao và API viết hoàn toàn bằng C# tiện lợi, dễ sử dụng với các bạn dùng Unity3d. Việc sử dụng tween để làm chuyển động sẽ khiến game của bạn có cảm giác mượt mà và chuyên nghiệp hơn rất nhiều.

Bài viết này sẽ hướng dẫn các bạn cài đặt và giới thiệu những tính năng cơ bản trong DOTween để làm chuyển động trong game.

Tại sao nên sử dụng DOTween Unity?

Các thư viện tweening như DOTween đóng gói sẵn rất nhiều hàm giúp giảm thiểu thời gian khi phát triển sản phẩm. Ngoài ra bạn nên sử dụng DOTween để làm animation cho UI. Lý do vì nếu sử dụng Animation của Unity để làm UI animation sẽ tạo ra GC mỗi frame không cần thiết dẫn đến giảm hiệu năng game. Sử dụng tweening để làm chuyển động UI sẽ không gặp vấn đề này.

Sử dụng DOTween Unity để tạo chuyển động

Import thư viện DOTween

Đầu tiên chúng ta sẽ tải DOTween từ trên Asset Store của Unity. Sau khi tải và Import xong thư viện DOTween vào project.

Sử dụng DOTween Unity

Cửa sổ để thiết lập DOTween hiện ra, bấm vào Open DOTween Utility Panel. Bạn cũng có thể truy cập bảng này thông qua menu của Unity Editor bằng đường dẫn: Tools > Demigiant > DOTween Utility Panel.

Sử dụng DOTween Unity

Tạo Assembly Definitions (ASMDEF)

Nếu dự án của bạn sử dụng ASMDEF thì chúng ta có thể bấm Create ASMDEF để DOTween tự động tạo Assembly Definitions giúp chúng ta. Lợi ích của ASMDEF là giúp giảm thiểu thời gian compile code và giúp hiển thị rõ quan hệ giữa các hệ thống code.

Thiết lập DOTween

Có ba tab trong bảng DOTween Utility. Chúng ta sẽ chỉ sử dụng hai tab đầu tiên SetupPreferences để thiết lập DOTween.

  • Setup: Việc bổ sung hoặc loại bỏ các module DOTween trong project. DOTween bao gồm nhiều các module được tích hợp sẵn giúp tweening từ Physics đến UI. Nếu game của bạn không sử dụng vật lý trong môi trường 2D thì chúng ta có thể remove module Physics 2D để giảm thiểu thời gian compile và dung lượng bản build. Nếu bạn mới bắt đầu project và chưa biết project không cần module thì tốt nhất nên giữ tất cả các module rồi dần dần bỏ những module mà project của bạn không sử dụng.

Sử dụng DOTween Unity

  • Preferences: Tuỳ chọn kích hoạt chế độ safe mode, TimeScale của DOTWeen, Debug mode,… Khi mới bắt đầu bạn nên để các chế độ này ở chế độ mặc định.

Các hàm cơ bản trong DOTween Unity

Tiếp theo chúng ta sẽ cùng tìm hiểu một số hàm cơ bản hữu dụng trong DOTween để tương tác với GameObject.

DOMove

DoMove di chuyển GameObject từ vị trí hiện tại đến vị trí mới.
DOMove(Vector3 to, float duration, bool snapping)

Trong đó tham số to là vị trí đích của GameObject, duration là thời gian để di chuyển từ vị trí hiện tại đến vị trí đích, snapping bằng true sẽ khiến các giá trị ở giữa được làm tròn đến số nguyên gần nhất. Chúng ta cùng xem kết quả của đoạn code sau để hiểu hơn cách DOMove hoạt động.

// Vị trí đích đến của GameObject.
public Vector3 Destination;

// Tổng thời gian move animation sẽ chạy.
public float Duration;

void Update()
{
// Move GameObject khi bấm Space.
    if (Input.GetKeyDown(KeyCode.Space))
    {
    gameObject.transform.DOMove(Destination, Duration);
    }
}

Chạy game và đặt giá trị cho Destination và Duration, đồng thời nhấn Space. Bạn sẽ thấy Cube di chuyển như trong clip bên dưới. Bạn có thể thay đổi các giá trị trong code để thử nghiệm tác dụng của chúng.

Sử dụng DOTween Unity

DOMoveX/Y/Z

Di chuyển GameObject tới vị trí đích của trục đã chọn.
DoMoveX/DOMoveY/DMoveZ(float to, float duration, bool snapping)

void Update()
{  
    // Di chuyển GameObject  theo trục x
    if (Input.GetKeyDown(KeyCode.X))
    {
        transform.DOMoveX(Destination.x, Duration);
    }

    // Di chuyển GameObject  theo trục y
    if (Input.GetKeyDown(KeyCode.Y))
    {
        transform.DOMoveY(Destination.y, Duration);
    }

    // Di chuyển GameObject  theo trục z
    if (Input.GetKeyDown(KeyCode.Z))
    {
        transform.DOMoveZ(Destination.z, Duration);
    }
}

Bạn có thể thấy GameObject sẽ chỉ di chuyển trên một trục X, Y hoặc Z.

Sử dụng DOTween Unity

DORotate

Giống như chúng ta đã làm với chuyển động, bạn chỉ cần đưa ra lệnh như DORotate để xoay GameObject theo góc mong muốn bằng DOTween.
DORotate(Vector3 toAngle, float duration, RotateMode mode)

// Xoay GameObject khi bấm R
if (Input.GetKeyDown(KeyCode.R))
{
    transform.DORotate(Destination, Duration);
}

Sử dụng DOTween Unity

DoScale

Thay đổi giá trị scale của GameObject trong thời gian cho trước.
DoScale(Vector3 to, float duration)

// Thay đổi scale của GameObject khi bấm S
if (Input.GetKeyDown(KeyCode.S))
{
    transform.DOScale(Destination, Duration);
}

Sử dụng DOTween Unity

Tổng kết

Bài viết trên đã giúp các bạn biết cách cài đặt và sử dụng một số hàm cơ bản hay dùng của DOTween. Hy vọng sau bài viết này các bạn có thể áp dụng DOTween vào dự án của mình để khiến trải nghiệm của người chơi mượt mà và chuyên nghiệp hơn.

Tags: game

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

12 + 7 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM