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.
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ó.
- Trong
Enemy, thayspeedbằngpublic EnemyData data;và di chuyển vớidata.speed. - Thêm
private int health;và gán giá trịdata.maxHealthcho biến này trongAwake.
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