Menu
CoddyTech

Tạo đối tượng theo bộ hẹn giờ

Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 63 trên 85.

Một bộ tạo vật thể xuất hiện sau mỗi vài giây cần có bộ đếm thời gian. Time.deltaTime là khoảng thời gian khung hình trước đó cần để hoàn tất, nên cộng dồn giá trị này vào một trường trong mỗi lần gọi Update() sẽ cho biết số giây đã trôi qua. Khi tổng thời gian đạt đến khoảng thời gian đã định, hãy tạo vật thể rồi trừ khoảng thời gian đó khỏi tổng.

Đài phun nước này phóng một giọt nước mỗi nửa giây:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval giữ lại phần thời gian dư: nếu khung hình kết thúc ở mốc 0.51 giây, nửa giây tiếp theo sẽ bắt đầu đếm từ 0.01, giúp các giọt nước luôn rơi đúng nhịp. timer = 0 sẽ bỏ phần thời gian dư đó, khiến mỗi giọt rơi muộn hơn một chút và độ trễ cứ tăng dần trong một trò chơi dài. timer là biến private vì không ai cần đặt giá trị cho nó trong Inspector.

challenge icon

Thử thách

Trung bình

Thả một hộp sau mỗi interval giây (2 trong Inspector).

  1. Thêm các trường float timer; và int count;. Trong Update(), cộng Time.deltaTime vào timer.
  2. Khi timer >= interval, gọi Instantiate(boxPrefab, transform.position, Quaternion.identity); và trừ interval khỏi timer.
  3. Sau đó, cộng 1 vào count và ghi nhật ký "Box " + count.

Nhấn Chơi: một hộp rơi sau mỗi 2 giây, và Console đếm Box 1, Box 2. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Cứ mỗi interval giây: thả một hộp và ghi vào nhật ký "Box 1", "Box 2"...
    }
}

Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity

Tự luyện tập: Playground Unity