Unity'de Trafik Işığı Nasıl Oluşturulur
Bu eğitim, C# kullanarak Unity'de basit bir trafik ışığı sistemi oluşturma sürecinde size rehberlik edecektir. Trafik ışıklarını nasıl kuracağınızı, onları kontrol etmek için mantık eklemeyi ve çalışan bir trafik ışığı sistemini nasıl simüle edeceğinizi öğreneceksiniz.
Ön koşullar
- Unity arayüzünün temel bilgisi
- C# programlamanın temel anlayışı
- Unity Bilgisayarınıza yüklü (herhangi bir güncel sürüm)
Adım 1: Sahneyi Kurma
Öncelikle Unity'de trafik ışığı sistemini simüle edecek şekilde üç ışık (Kırmızı, Sarı ve Yeşil) içeren bir sahne kurmamız gerekiyor.
- Unity'i açın ve yeni bir proje oluşturun.
- Hierarchy penceresinde, trafik ışıklarını temsil eden üç 3D nesne oluşturun. Her ışık için Spheres kullanabilirsiniz. Adlarını RedLight, YellowLight ve GreenLight olarak değiştirin.
- Dikey bir trafik ışığını simüle etmek için Sahne görünümünde bunları üst üste yerleştirin. Gerektiğinde konumlarını ve ölçeklerini ayarlayın.
- To make them look like real traffic lights, assign different colors to each sphere:
- RedLight öğesini seçin ve malzeme rengini kırmızıya değiştirin.
- YellowLight öğesini seçin ve malzeme rengini sarıya değiştirin.
- GreenLight öğesini seçin ve malzeme rengini yeşil olarak değiştirin.
Adım 2: Trafik Işığı Komut Dosyasını Oluşturma
Şimdi, trafik ışığı davranışını kontrol etmek için bir betik yazacağız. Bu betik, düzenli aralıklarla kırmızı, sarı ve yeşil ışıklar arasında geçiş yapacaktır.
- Assets klasöründe sağ tıklayın ve Create > C# Script seçeneğini seçin. Adını TrafficLightController olarak belirleyin.
- Scripti tercih ettiğiniz kod düzenleyicide açın ve aşağıdaki kodu yazın:
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);
}
}
}
Bu senaryo, kırmızı, yeşil ve sarı ışıkların sırayla yanıp söndüğü basit bir döngüyü tanımlar.
Adım 3: Işıkları Komut Dosyasına Atama
Artık senaryomuz hazır olduğuna göre, hangi ışıkların kontrol edileceğini bilmesi için ışık nesnelerini senaryoya bağlamamız gerekiyor.
- Ana Kamera'u seçin veya betiği tutmak için sahnede boş bir GameObject oluşturun. Adını TrafficLightController koyun.
- Inspector'da Bileşen Ekle'a tıklayın ve TrafficLightController betiğini ekleyin.
- Assign the traffic light spheres to the script:
- RedLight nesnesini betikteki redLight alanına sürükleyin.
- YellowLight nesnesini yellowLight alanına sürükleyin.
- GreenLight nesnesini greenLight alanına sürükleyin.
Adım 4: Trafik Işığı Sisteminin Test Edilmesi
Şimdi trafik ışığı sistemini test edip her şeyin beklendiği gibi çalışıp çalışmadığını görmenin zamanı geldi.
- Unity düzenleyicinin üst kısmındaki Oynat düğmesine basın.
- Trafik ışığı sistemini eylem halinde gözlemleyin. Kırmızı, yeşil ve sarı ışıklar, komut dosyasında tanımladığınız zaman aralıklarına göre döngüye girmelidir.
Her şey çalışıyorsa, kırmızı ışığın 5 saniye boyunca, ardından yeşil ışığın 5 saniye boyunca ve ardından sarı ışığın 2 saniye boyunca yandığını ve bunun bir döngü halinde tekrarlandığını görmelisiniz.
Adım 5: Trafik Işığını Özelleştirme
Her ışık için zaman aralıklarını değiştirerek trafik ışığı sistemini kolayca özelleştirebilirsiniz. Inspector penceresinde, her ışığın ne kadar süre açık kalacağını değiştirmek için redLightDuration, yellowLightDuration ve greenLightDuration alanlarını değiştirin.
Örneğin, yoğun bir kavşağı simüle etmek için kırmızı ışığın daha uzun süre yanmasını sağlayabilir veya daha hızlı bir geçiş için sarı ışığın süresini ayarlayabilirsiniz.
Çözüm
Unity'de basit bir trafik ışığı sistemini başarıyla oluşturdunuz. Bu öğreticiyi takip ederek, GameObjects'i C# ile nasıl kontrol edeceğinizi ve gerçek dünya sistemini simüle etmek için zamanlanmış bir döngüyü nasıl uygulayacağınızı öğrendiniz. Buradan, yaya ışıkları, geri sayım zamanlayıcıları veya daha karmaşık trafik kuralları gibi daha fazla özellik ekleyerek bu projeyi genişletebilirsiniz.