Cách tạo đèn giao thông trong Unity

Hướng dẫn này sẽ hướng dẫn bạn quy trình tạo hệ thống đèn giao thông đơn giản trong Unity bằng C#. Bạn sẽ học cách thiết lập đèn giao thông, thêm logic để điều khiển chúng và mô phỏng hệ thống đèn giao thông đang hoạt động.

Điều kiện tiên quyết

  • Kiến thức cơ bản về giao diện Unity
  • Hiểu biết cơ bản về lập trình C#
  • Unity được cài đặt trên máy tính của bạn (bất kỳ phiên bản nào gần đây)

Bước 1: Thiết lập bối cảnh

Đầu tiên, chúng ta cần thiết lập cảnh trong Unity với ba đèn (Đỏ, Vàng và Xanh lục) để mô phỏng hệ thống đèn giao thông.

  1. Mở Unity và tạo một dự án mới.
  2. Trong cửa sổ Hierarchy, tạo ba đối tượng 3D đại diện cho đèn giao thông. Bạn có thể sử dụng Spheres cho mỗi đèn. Đổi tên chúng thành RedLight, YellowLightGreenLight.
  3. Đặt chúng lên trên nhau trong chế độ xem Scene để mô phỏng đèn giao thông theo chiều dọc. Điều chỉnh vị trí và tỷ lệ của chúng khi cần.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • Chọn RedLight và thay đổi màu vật liệu thành đỏ.
    • Chọn YellowLight và thay đổi màu vật liệu thành màu vàng.
    • Chọn GreenLight và thay đổi màu vật liệu thành màu xanh lá cây.

Bước 2: Tạo tập lệnh đèn giao thông

Bây giờ, chúng ta sẽ viết một tập lệnh để điều khiển hành vi của đèn giao thông. Tập lệnh này sẽ tuần hoàn qua đèn đỏ, vàng và xanh lá cây theo các khoảng thời gian đều đặn.

  1. Trong thư mục Assets, nhấp chuột phải và chọn Create > C# Script. Đặt tên là TrafficLightController.
  2. Mở tập lệnh trong trình soạn thảo mã bạn thích và viết đoạn mã sau:
using System.Collections;
using UnityEngine;

public class TrafficLightController : MonoBehaviour
{
    public GameObject redLight;
    public GameObject yellowLight;
    public GameObject greenLight;
    
    public float redLightDuration = 5f;
    public float yellowLightDuration = 2f;
    public float greenLightDuration = 5f;
    
    private void Start()
    {
        StartCoroutine(TrafficLightCycle());
    }
    
    IEnumerator TrafficLightCycle()
    {
        while (true)
        {
            // Red light on
            redLight.SetActive(true);
            yellowLight.SetActive(false);
            greenLight.SetActive(false);
            yield return new WaitForSeconds(redLightDuration);
            
            // Green light on
            redLight.SetActive(false);
            yellowLight.SetActive(false);
            greenLight.SetActive(true);
            yield return new WaitForSeconds(greenLightDuration);
            
            // Yellow light on
            redLight.SetActive(false);
            yellowLight.SetActive(true);
            greenLight.SetActive(false);
            yield return new WaitForSeconds(yellowLightDuration);
        }
    }
}

Tập lệnh này định nghĩa một chu kỳ đơn giản trong đó đèn đỏ, xanh lá cây và vàng bật và tắt theo trình tự.

Bước 3: Gán đèn cho kịch bản

Bây giờ kịch bản đã sẵn sàng, chúng ta cần liên kết các đối tượng ánh sáng với kịch bản để kịch bản biết phải điều khiển ánh sáng nào.

  1. Chọn Main Camera hoặc tạo một GameObject trống trong cảnh để chứa tập lệnh. Đặt tên là TrafficLightController.
  2. Trong Inspector, nhấp vào Add Component và đính kèm tập lệnh TrafficLightController.
  3. Assign the traffic light spheres to the script:
    • Kéo đối tượng RedLight vào trường redLight trong tập lệnh.
    • Kéo đối tượng YellowLight vào trường yellowLight.
    • Kéo đối tượng GreenLight vào trường greenLight.

Bước 4: Kiểm tra hệ thống đèn giao thông

Bây giờ đã đến lúc kiểm tra hệ thống đèn giao thông và xem mọi thứ có hoạt động như mong đợi không.

  1. Nhấn nút Play ở đầu trình soạn thảo Unity.
  2. Quan sát hệ thống đèn giao thông đang hoạt động. Đèn đỏ, xanh lá cây và vàng sẽ tuần hoàn theo khoảng thời gian bạn đã xác định trong tập lệnh.

Nếu mọi thứ đều hoạt động bình thường, bạn sẽ thấy đèn đỏ sáng trong 5 giây, tiếp theo là đèn xanh trong 5 giây và đèn vàng trong 2 giây, lặp lại theo vòng lặp.

Bước 5: Tùy chỉnh đèn giao thông

Bạn có thể dễ dàng tùy chỉnh hệ thống đèn giao thông bằng cách thay đổi khoảng thời gian cho mỗi đèn. Trong cửa sổ Inspector, hãy sửa đổi các trường redLightDuration, yellowLightDurationgreenLightDuration để thay đổi thời gian mỗi đèn sáng.

Ví dụ, bạn có thể làm cho đèn đỏ sáng lâu hơn để mô phỏng giao lộ đông đúc hoặc điều chỉnh thời lượng đèn vàng để chuyển hướng nhanh hơn.

Phần kết luận

Bạn đã tạo thành công một hệ thống đèn giao thông đơn giản trong Unity. Bằng cách làm theo hướng dẫn này, bạn đã học cách điều khiển GameObjects bằng C# và triển khai vòng lặp theo thời gian để mô phỏng hệ thống trong thế giới thực. Từ đây, bạn có thể mở rộng dự án này bằng cách thêm nhiều tính năng hơn như đèn dành cho người đi bộ, bộ đếm thời gian đếm ngược hoặc các quy tắc giao thông phức tạp hơn.