Menu
CoddyTech

Bắn

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

Tháp bắn Projectile vào mục tiêu. Viên đạn bay đến đó bằng MoveTowards, bám theo mục tiêu khi nó di chuyển và gây sát thương khi chạm đích. Viên đạn không cần biết mình đã trúng Enemy: nó kiểm tra IDamageable, giao diện dành cho mọi thứ có thể nhận sát thương, nên bất cứ thứ gì triển khai giao diện này đều có thể bị bắn trúng.

Mục tiêu có thể chết khi viên đạn đang bay. Đối tượng Unity đã bị hủy sẽ so sánh bằng null, vì vậy viên đạn kiểm tra target == null trước rồi tự hủy.

Hiện tại, tháp bắn mỗi giây một lần. Tháp lưu thời điểm bắn tiếp theo:

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

Thử thách

Trung bình

Tháp bắn tên mỗi giây một lần.

  1. Enemy triển khai IDamageable: TakeDamage(int amount) trừ lượng sát thương khỏi health, tiêu diệt kẻ địch khi máu còn 0 hoặc thấp hơn.
  2. Projectile: Launch(Transform target, int damage) lưu cả hai giá trị; Update bay đến mục tiêu với tốc độ speed, gọi TakeDamage(damage) khi đến nơi rồi tự hủy, đồng thời cũng tự hủy khi mục tiêu không còn.
  3. Tower: thêm public int damage = 2; và [SerializeField] private Projectile projectilePrefab;; bắn như trên từ transform.position + Vector3.up.

Nhấn Chơi: tên bay đi và Grunt ngã xuống. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

// Sẽ thêm sau: viên đạn bay từ tháp đến mục tiêu.
public class Projectile : MonoBehaviour
{
}

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

Tự luyện tập: Playground Unity