איך ליצור רמזור באחדות

הדרכה זו תדריך אותך בתהליך של יצירת מערכת רמזורים פשוטה ב-Unity באמצעות C#. תלמדו כיצד להגדיר את הרמזורים, להוסיף היגיון לשליטה בהם ולדמות מערכת רמזורים פועלת.

דרישות מוקדמות

  • ידע בסיסי בממשק Unity
  • הבנה בסיסית בתכנות C#
  • Unity מותקן במחשב שלך (כל גרסה עדכנית)

שלב 1: הגדרת הסצנה

ראשית, עלינו להגדיר את הסצנה ב-Unity עם שלושה אורות (אדום, צהוב וירוק) כדי לדמות מערכת רמזורים.

  1. פתח את Unity וצור פרוייקט חדש.
  2. בחלון Hierarchy, צור שלושה 3D אובייקטים המייצגים את הרמזורים. אתה יכול להשתמש ב-Spheres עבור כל אור. שנה את שמם ל-RedLight, YellowLight ו-GreenLight.
  3. הנח אותם זה על גבי זה בתצוגת Scene כדי לדמות רמזור אנכי. התאם את מיקומם ואת קנה המידה שלהם לפי הצורך.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • בחר RedLight ושנו את צבע החומר שלו לאדום.
    • בחר YellowLight ושנה את צבע החומר שלו לצהוב.
    • בחר GreenLight ושנה את צבע החומר שלו לירוק.

שלב 2: יצירת סקריפט הרמזור

כעת, נכתוב תסריט כדי לשלוט בהתנהגות הרמזור. סקריפט זה יעבור בין האורות האדומים, הצהובים והירוקים במרווחי זמן קבועים.

  1. בתיקייה Asets, לחץ לחיצה ימנית ובחר Create > C# Script. תן לזה TrafficLightController.
  2. פתח את הסקריפט בעורך הקוד המועדף עליך וכתוב את הקוד הבא:
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);
        }
    }
}

סקריפט זה מגדיר מחזור פשוט שבו האורות האדומים, הירוקים והצהובים נדלקים ונכבים ברצף.

שלב 3: הקצאת האורות לתסריט

כעת, כשהסקריפט מוכן, עלינו לקשר את אובייקטי האור לסקריפט כדי שידע באילו נורות לשלוט.

  1. בחר את המצלמה הראשית או צור GameObject ריק בסצנה כדי להחזיק את התסריט. תן לזה TrafficLightController.
  2. ב-Inspector, לחץ על Add Component וצרף את הסקריפט TrafficLightController.
  3. Assign the traffic light spheres to the script:
    • גרור את האובייקט RedLight לשדה redLight בסקריפט.
    • גרור את האובייקט YellowLight לשדה yellowLight.
    • גרור את האובייקט GreenLight לשדה greenLight.

שלב 4: בדיקת מערכת הרמזורים

כעת, הגיע הזמן לבדוק את מערכת הרמזורים ולראות אם הכל עובד כמצופה.

  1. לחץ על הלחצן Play בחלק העליון של עורך Unity.
  2. התבונן במערכת הרמזורים בפעולה. האורות האדומים, הירוקים והצהובים צריכים להדליק על סמך מרווחי הזמן שהגדרת בסקריפט.

אם הכל עובד, אתה אמור לראות את האור האדום נדלק למשך 5 שניות, ולאחר מכן את האור הירוק למשך 5 שניות, ולאחר מכן את האור הצהוב למשך 2 שניות, חוזר בלולאה.

שלב 5: התאמה אישית של הרמזור

אתה יכול בקלות להתאים אישית את מערכת הרמזורים על ידי שינוי מרווחי הזמן עבור כל רמזור. בחלון Inspector, שנה את השדות redLightDuration, yellowLightDuration ו-greenLightDuration כדי לשנות את משך הזמן של כל נורה דולקת.

לדוגמה, אתה יכול לגרום לאור האדום להישאר דולק יותר כדי לדמות צומת עמוס או להתאים את משך האור הצהוב למעבר מהיר יותר.

מַסְקָנָה

יצרת בהצלחה מערכת רמזורים פשוטה ב-Unity. על ידי ביצוע המדריך הזה, למדת כיצד לשלוט ב-GameObjects עם C# וליישם לולאה מתוזמנת כדי לדמות מערכת בעולם האמיתי. מכאן, אתה יכול להרחיב על הפרויקט הזה על ידי הוספת תכונות נוספות כמו אורות להולכי רגל, טיימרים לספירה לאחור או חוקי תנועה מורכבים יותר.