12/08/2018, 13:40

Hướng dẫn sử dụng Animator trong game Unity2D

**Giới Thiệu ** Chào các bạn hôm nay mình sẽ hướng dẫn các bạn sử dụng Animator trong game Unity 2D . Để cho dễ hình dung thì mình sẽ làm các animation cho một nhân vật trong game có các hành động là đi bộ , tấn công, chết, và một trạng thái đứng bình thường . Sau đó mình sử dụng animator để kết ...

**Giới Thiệu **

Chào các bạn hôm nay mình sẽ hướng dẫn các bạn sử dụng Animator trong game Unity 2D . Để cho dễ hình dung thì mình sẽ làm các animation cho một nhân vật trong game có các hành động là đi bộ , tấn công, chết, và một trạng thái đứng bình thường . Sau đó mình sử dụng animator để kết hợp các hành động đó lại và điều khiển các trạng thái đó .

Cách làm

Đầu tiên các bạn hãy tạo một project Unity mới , chọn 2D nhé cho nhẹ .

1.png

Tiếp theo các bạn thêm các ảnh của nhận vật với các trạng thái như trên vào project

2.png

Bước tiếp theo chúng ta sẽ tạo ra một đối tượng Sprite 2D như sau, ở đây mình đặt tên nó là Player :

3.png

Tiếp theo ta sẽ tạo các animation tương ứng với từng trạng thái đã nêu ở trên .

Đầu tiên là trạng thái đi bộ : Bạn mở view animation lên : 4.png

Tiếp theo chọn đối tượng Player mình vừa tạo và ở view Animation ta ấn nút create , ta sẽ đặt tên animation là Wall và để nó vào thư mục Animations ở trong Asset

5.png

Tiếp theo ta kéo những image tương ứng với hành động walk từ asset vào animation như dưới đây :

6.png

Mình để giá trị samples ở đây là 20 để hành động chạy giống thật nhất .

Ok ta tiếp tục tạo ra các animation idle, die, attack giống như cách vừa làm .

Vậy ta có 4 animation cho đối tượng Player . Việc bây giờ là để làm sao điều khiển được các hành động ấy .

Bạn click vào Player và nhìn sang bên phải cột Inspactor thì trong Player có một thuộc tính là Animator , nó được tạo ra khi mình add animation cho đối tượng ở trên . Animator là cái để điều khiển các animation của đối tượng trong Unity 2D . Bạn hãy mở view Animator lên ta sẽ thấy 4 animation như sau :

7.png

Việc bây giờ ta cần làm là kết nối những animation này với nhau . Ta sẽ tạo ra những Transion giữa chúng ,ví dụ tạo transion từ Walk tới Idle ta chuột phải vào Walk và chọn Make Transion rồi giữ chuột kéo từ Walk tới Idle

8.png

9.png

À viết tới đây mới nhớ các bạn khi tạo ra các animation rồi thì click vào animation đó và chọn chế độ chạy là một lần hay lặp lại nhé , ví dụ Walk thì chạy lặp lại còn Die thì một lần . Chọn Loop Time có nghĩa là chạy lặp lại còn bỏ tick là chạy một lần .

10.png

Ok tiếp theo ta tạo các param để thay đổi trạng thái giữa các animation . Ta ấn vào nút dấu cộng trong tab Parameter và tạo param kiểu int là AnimationState .

14.png

Tiếp theo ta tạo các liên kết như hình dưới đây :

12.png

Để điều khiển sự chuyển đổi giữa các animation bạn hãy chỉ chuột vào một mũi tên ví dụ mũi tên từ Idle sang Walk và nhìn sang cột Inspector ở mục conditions ta chọn giá trị AnimationState là 1 .Điều này có nghĩa là nếu giá trị của param AnimationState = 1 thì sẽ chuyển trạng thái từ Idle sang walk . Tương tự bạn làm cho các mũi tên khác : mũi tên sang Atack set giá trị là 3 , mũi tên sang Idle giá trị là 2, mũi tên sang Die giá trị là 4

15.png

Tiếp theo ta viết script để điều khiển Player . Nội dung là khi ta nhấn nút W thì chuyển trạng thái sang Walk , ând nút A thì chuyển sang trạng thái Atack , ấn nút D thì chuyển trạng thái sang Die , và mặc định thì ở trạng thái Idle .

các bạn tạo một file script tên là Player.cs với nội dung như sau :

using UnityEngine;
using System.Collections;

public class Player: MonoBehaviour {

	Animator animator;

	const int WALK =1;
	const int IDLE =2;
	const int ATTACK =3;
	const int DIE =4;
	const string animationState = "AnimationState";

	// Use this for initialization
	void Start () {
		animator = gameObject.GetComponent<Animator>();
	}

	// Update is called once per frame
	void Update () {
		if(Input.GetKey(KeyCode.W)){
			animator.SetInteger(animationState,WALK); //for Walk
		}else if(Input.GetKey(KeyCode.A)){
			animator.SetInteger(animationState,ATTACK); // for Attack
		}else if(Input.GetKey(KeyCode.Space)){
			animator.SetInteger(animationState,DIE); // for Die
		}else{
			animator.SetInteger(animationState,IDLE); //For Idle
		}

	}
}

Tiếp theo ta add script đó vào đối tượng Player

16.png

Ok giờ bạn chạy thử được rồi .

Kết Luận

Với việc sử dụng Animator như thế này việc tạo ra các hành động và điều khiển chúng trong Unity là rất đơn giản và linh động .

0