Menu
CoddyTech

Dữ liệu kẻ địch

Bài học 2 trên 25 trong khóa học Game Unity: thủ thành của Coddy.

Một Runner gia nhập nhóm Grunt. Nó nhanh hơn và có ít máu hơn, đồng thời mọi Runner đều có các chỉ số đó, nên chúng thuộc về loại kẻ địch chứ không phải một kẻ địch riêng lẻ. Các chỉ số này nằm trong tài sản ScriptableObject EnemyData được cung cấp: dự án có GruntData (tốc độ 2, máu 9) và RunnerData (tốc độ 3.5, máu 5), còn cửa sổ Inspector gán cho mỗi kẻ địch một tài sản riêng trong trường data.

Mỗi kẻ địch đọc các chỉ số của loại mình thông qua trường đó mỗi khi cần:

void Start()
{
    Debug.Log(name + " pays " + data.reward);
}

Máu thì khác: một Grunt đã trúng đòn sẽ có ít máu hơn Grunt phía sau nó. Vì vậy, tài sản lưu maxHealth, còn mỗi kẻ địch sao chép giá trị này vào trường riêng của mình trong Awake, hàm chạy ngay khi đối tượng được tạo. Đừng bao giờ thay đổi chính tài sản đó: mọi kẻ địch cùng loại sẽ thay đổi theo.

challenge icon

Thử thách

Dễ

Gán cho mỗi kẻ địch chỉ số của loại đó từ tài sản của nó.

  1. Trong Enemy, thay speed bằng public EnemyData data; và di chuyển với data.speed.
  2. Thêm private int health; và gán giá trị data.maxHealth cho biến này trong Awake.

Nhấn Chơi: Runner vượt qua Grunt. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 2f;
    public Transform[] waypoints;

    private int next = 1;

    void Update()
    {
        if (next >= waypoints.Length)
        {
            return;
        }

        Vector3 target = waypoints[next].position;
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
        if (transform.position == target)
        {
            next++;
        }
    }
}

Tất cả bài học trong Game Unity: thủ thành

Tự luyện tập: Playground Unity