Unity’de Lazerli Güvenlik Sistemi Yapımı

Unity’de Lazerli Güvenlik Sistemi Yapımı

30 Haziran 2020 0 Yazar: Ahmet Güler

Merhaba, bir önceki dersimizde Unity ile şifreli kapı yapımını öğrenmiştik.Böylelikle yapmış olduğumuz projelerde giriş veya çıkışlara şifre mekanizması yerleştirerek farklı dinamikler elde edebiliyorduk.Bugünkü dersimizde ise, Unity ile lazerli güvenlik sistemi yapacağız.O zaman vakit kaybetmeden yeni bir proje oluşturalım ve dersimize başlayalım.

Sahnemizi hazırlamaya başlayalım.

Evet ilk olarak bu projemizde kullanacağımız senaryoya bir bakalım.Yapacağımız mekanizmalar güvenlik sistemi üzerine olduğu için senaryoda, bir banka kasası simule edeceğiz ve lazerleri kasamızın içerisine yerleştireceğiz.Lazerlerden biriyle temas halinde ise, güvenlik sistemi devreye girerek gerekli işlemleri gerçekleştirecek.

Şimdi sahnemize bir Plane nesnesi yerleştirerek başlıyoruz.Bu nesne bizim zeminimizi oluşturacak.Daha sonra internetten bulduğumuz bir kasa modelini projemize dahil ediyoruz.Modelimizi sahnemize sürükleyerek ekliyoruz.Şimdi burada yapmamız gereken birkaç işlem var.Öncelikle, kasa kapağımızın seçtiğimiz modelde ayrı olarak bulunması gerekiyor.Yani tek bir katman olmaması gerekiyor.Çünkü biz bu kapağı açarak içeri gireceğiz.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Farklı bir katmanda bulunuyorsa Hierarchy penceresinde, bu modelimizin alt nesnelerini hiyerarşik olarak düzenlememiz bize ileride hız kazandıracaktır.Daha sonra kasamızın duvarlarını oluşturuyoruz.Bunun için sahnemize Cube nesnesini ekliyoruz.Scene penceresinde bulunan araçları kullanarak bir duvar biçimine getiriyoruz.Sonra bu Cube nesnemizden kopyalar alarak kasamızın duvarlarını tamamlıyoruz.

Artık duvarlarımız ve kasa kapağımız hazır.Şimdi içeriye korunacak bir nesne eklememiz gerekiyor.Bunun için yine internetten bulduğumuz bir heykel modelini (yada siz ne isterseniz) projemize dahil ediyoruz.Daha sonra sahnemize bu modeli ekliyoruz ve Scene penceresinde bulunan araçlardan yardım alarak, boyunu ve konumunu ayarlıyoruz.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Şimdi oyuncumuz için FPSController scriptini projemize dahil etmemiz gerekiyor.Bunun için üst menüde bulunan Assets butonuna tıklıyoruz ve oradan bulunan Import Package menüsünden projemize ekliyoruz.Eğer sizde boş gözüküyorsa bu sefer, Assets Store penceresine giriyoruz.Daha sonra arama bölümüne, Standard Assets yazıyoruz ve ilk çıkan sonucu indiriyoruz.Artık projenizde FPSController scriptini kullanabilirsiniz.

Lazerlerin konumlarını oluşturmaya başlayalım.

Evet duvarlarımızı hazırlamıştık.Şimdi üzerine lazerlerin geleceği konumları ayarlamamız gerekiyor.Bunun için Hierarchy penceresinde duvar nesnemizi seçiyoruz ve sağ tıklayarak boş bir nesne oluşturuyoruz.Daha sonra bu boş nesnemizi Scene penceresinde, duvarımızın üzerinde rastgele bir konuma ayarlıyoruz.Bu işlemi istediğiniz kadar tekrarlayabilirsiniz.Ben altı tane lazer noktası oluşturdum.Ayriyeten konumları daha iyi ayarlamak için bir Cube nesnesinden de yararlanabilirsiniz.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Duvarımızın bir tarafını ayarladık.Şimdi karşı tarafındaki duvar içinde aynı işlemleri yapmamız gerekiyor.Burada yine lazerlerin geleceği konumları rastgele ayarlıyoruz.Yani karşı duvar ile hizalamak için uğraşmanıza gerek yok.Çünkü ekleyeceğimiz lazerlerin başlangıç ve bitiş konumları farklı eksenlerde olacaklar.

Lazerleri oluşturmaya başlayalım.

Evet şimdi lazerlerimizi oluşturmaya gelelim.Bunun için yine Hierarchy penceresinde lazerimizin geleceği noktayı seçiyoruz.Daha sonra sağ tıklıyoruz ve boş bir nesne oluşturuyoruz.Boş nesnemizi seçtikten sonra ise, Inspector penceresinde Add Component butonuna basıyoruz.Arama bölümüne Line Renderer yazıyoruz ve bu bileşeni nesnemize ekliyoruz.

Yine diğer lazer noktaları içinde bu işlemi yapmamız gerekiyor.Burada dikkat etmeniz gereken şey ise, sadece bir  duvar için bu işlemi yapıyoruz.Örneğin, ben sol taraftaki duvar üzerine lazerlerimi yerleştirdim.Bu, lazerlerin başlangıç noktasının sol duvar olacağını gösteriyor.Tam karşısındaki yani sağ taraftaki duvar ise, lazerlerin bitiş noktasını oluşturacaklar.Yani diğer duvarlara lazer eklemeye gerek yoktur.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Şimdi bu lazerlerin ışığını oluşturmamız gerekiyor.Bunun için öncelikle, Project penceresinde sağ tıklayarak bir material oluşturuyoruz.Daha sonra Inspector penceresinde Rendering Mode ayarını, Opaque yapıyoruz.Daha sonra internetten bulduğumuz bir lazer kaplamasını projemize dahil ediyoruz.Kolay bulmanız açısından, “laser texture” kelimelerini aratabilirsiniz.

Material dosyamızın Inspector penceresinde bulunan Albedo bölümüne, bu kaplamayı sürükleyerek bırakıyoruz.Şimdi ilk aşamayı tamamladık.İkinci aşamaya geçebiliriz.Hierarchy penceresinde lazer nesnelerimizi seçiyoruz.Daha sonra Inspector penceresinde bulunan Line Renderer bileşenine geliyoruz ve materials bölümüne, az önce oluşturduğumuz material dosyasını sürükleyerek bırakıyoruz.

Daha sonra lazer kaplamamızı sürükleyerek Inspector penceresinde alt tarafa bırakıyoruz.Burada yapmamız gereken birkaç ayar bulunuyor.İlk olarak Shader bölümünde sırasıyla, Particles > Standart Unlit seçimini yapıyoruz.Daha sonra Blending Options bölümüne geliyoruz.Burada Rendering Mode ayarını, Additive yapıyoruz.Color Mode ayarını ise, Multiply olarak değiştiriyoruz.Eğer lazer ışınının rengini değiştirmek isterseniz, Maps bölümünde yer alan renk paletini kullanabilirsiniz.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Gece görüş gözlüğünü yapalım.

Evet senaryomuzda lazer ışınlarını çıplak gözle göremeyeceğimiz için, bir gözlüğe ihtiyacımız var.Bunun için Hierarchy penceresinde, Canvas nesnesi oluşturuyoruz.Daha sonra bu Canvas nesnemizi seçiyoruz ve Inspector penceresine geliyoruz.Canvas Scaler bileşenini buluyoruz.Bu bileşende bulunan, UI Scale Mode ayarını Scale With Screen Size seçeneğine getiriyoruz.Aşağıda açılan Reference Resolution bölümüne ise, istediğimiz bir çözünürlük oranını giriyoruz.Tavsiyem 1920×1080 yani full hd bir çözünürlük girmenizdir.

Şimdi Canvas nesnemizin içerisine bir Image nesnesi oluşturuyoruz.Bu nesneye bir resim atamamız gerekiyor.Bunun için internetten bulduğumuz ve uygun olan bir resmi projemize ekliyoruz.Inspector penceresinde bu resmin Texture Type modunu, Sprite (2D and UI) olarak değiştiriyoruz.Şimdi Image nesnemizde bulunan Source Image bölümüne ekliyoruz.Daha sonra Scene penceresinde bulunan çapaları (anchors) kullanarak, resmimizin sınırlarını ayarlıyoruz.Artık gece görüş gözlüğümüz hazır.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Alarm Sistemini oluşturalım.

Evet şimdi alarm sistemi yani ışıkları ve sesleri ayarlamamız gerekiyor.Bunun için, Hierarchy penceresinde boş bir nesne oluşturuyoruz.Daha sonra bu boş nesnemizin içerisine, bir Directional Light nesnesi ekliyoruz.Eklediğimiz bu ışığın şiddetini ayarlamak için, İntensity bölümünün değerini değiştirebilirsiniz.Renk olarak ben kırmızıyı tercih ettim.Siz istediğiniz gibi ayarlabilirsiniz.

Alarm ışığımız hazır.Şimdi ise, Alarm sesimizi oluşturalım.Bunun için yine, boş nesnemizin içerisine, bir Audio Source nesnesi ekliyoruz.Inspector penceresinde bulunan, Play On Awake seçeneğini iptal ediyoruz.Son olarak ise, her iki nesnemize birer etiket oluşturuyoruz ve bu etiketleri nesnelerimize ekliyoruz.Evet artık alarm sistemimiz de hazırlanmış oldu.

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser

Kasa kapımızın kontrolünü oluşturalım.

Evet ilk olarak yeni bir C# Script dosyası oluşturuyoruz.Bu script dosyamızda, kasa kapımızı kontrol edeceğiz.Şimdi editör yardımı ile bu dosyayı açalım ve kodlarımızı yazmaya başlayalım.

public Transform Kasa;
public GameObject Oyuncu;
public bool KapiyiAc;

Şimdi kullanacağımız değişkenleri oluşturmakla başlıyoruz.İlk satırda Transform değişkeni oluşturuyoruz.Bu değişken ile kasa kapağımızı kontrol edebileceğiz.İkinci satırda bir GameObject değişkeni oluşturuyoruz.Bu değişkenle ise oyuncumuzu kontrol edeceğiz.Son satırda ise, bool türünde bir değişken oluşturuyoruz.Bu değişken ile kasa kapağımızın açılıp/kapanmasını ayarlayabileceğiz.

Kasa = this.gameObject.transform;
Oyuncu = GameObject.FindWithTag("Oyuncu");
KapiyiAc = false;

Şimdi bu kodları start() fonksiyonumuzun içerisine yazıyoruz.İlk satırda değişkenimize, script dosyasının ekli olduğu nesnenin Transform değerlerini tanımlıyoruz.İkinci satırda değişkenimize, etiketi “Oyuncu” olan nesnemizi tanımlıyoruz.Son satırda ise bool türündeki değişkenimizin değerini false olarak belirliyoruz.

float uzaklik = Vector3.Distance(Oyuncu.transform.position, transform.position);
if (uzaklik < 4f) {
   if(Input.GetKeyDown(KeyCode.E)) {
      KapiyiAc = true;
   }
}

Bu kodları şimdi update() fonksiyonumuzun içerisine yazıyoruz.İlk satırda yeni bir float değişkeni oluşturuyoruz.Daha sonra bu değişkenimize, Distance fonksiyonundan yardım alarak kasa kapağı ile oyuncu arasındaki mesafeyi tanımlıyoruz.Bu fonksiyonun aldığı parametrelere bakacak olursak, ilk olarak hedef nesnenin daha sonra ise arasındaki mesafeyi ölçeceğimiz nesnenin pozisyonunu yazıyoruz.

İkinci satırda ise, yeni bir koşul oluşturuyoruz.Eğer “uzaklik” değişkenimizin değeri, dörtten “4” küçükse koşulumuz aktif oluyor.Üçüncü satırda ikinci bir koşul oluşturuyoruz.Eğer klavyeden “E” tuşuna basarsak, koşulumuzun içerisindeki kodlar aktif oluyor.Dördüncü satırda ise, bool türündeki değişkenimizin değerini true olarak değiştiriyoruz.

if(KapiyiAc) {
   Kasa.rotation = Quaternion.Lerp(Kasa.rotation, Quaternion.Euler(0, 18f, 0), Time.deltaTime * 0.4f);
}else {
   Kasa.rotation = Quaternion.Lerp(Kasa.rotation, Quaternion.Euler(0, -75f, 0), Time.deltaTime * 0.9f);
}

Yine bu kodları update() fonksiyonumuzun devamına yazıyoruz.İlk satırda yeni bir koşul oluşturuyoruz.Eğer bool türündeki “KapiyiAc” değişkenimizin değeri true ise, koşulumuz aktif oluyor.İkinci satırda değişkenimizin rotation değerlerini, Quaternion.Lerp fonksiyonunu kullanarak değiştiriyoruz.Bu fonksiyon ile hedef nesnenin hareketini istediğimiz hızda ve belirlediğimiz hedefe yakınlığına göre yavaşlayacak şekilde ayarlayabiliyoruz.

Quaternion.Lerp fonksiyonunun parametrelerine bakacak olursak, ilk sırada nesnemizin rotation değerlerini yazıyoruz.İkinci sırada hangi eksende hareket edeceğini ve hedef açıyı, Quaternion.Euler yardımı ile belirliyoruz.Üçüncü sırada ise, nesnemizin hareket hızını belirliyoruz.Bu hızı Time.deltaTime fonksiyonu ile çarparak da, her karede eşit bir hız elde ediyoruz.

Koşulumuzun ikinci kısmına bakacak olursak yani else bölümünde, yine yukarıda anlattığım gibi tekrar değişkenimizin rotation değerlerini, Quaternion.Lerp fonksiyonunu kullanarak değiştiriyoruz.Ancak bu sefer, kapımızın kapanacağı açıyı ve hızını değiştiriyoruz.Böylece kasa kapımızı tekrar eski açısına ve konumuna döndürüyoruz.

Güvenlik sistemi için kodlarımızı yazalım.

Evet şimdi ikinci bir C# Script dosyası oluşturuyoruz.Bu script dosyamızda ise, güvenlik sistemimizi kontrol edeceğiz.Bunlar arasında ses, ışık, lazer ve gece görüş kontrolü olacak.Şimdi editör yardımı ile bu dosyayı açalım ve kodlarımızı yazmaya başlayalım.

using UnityEngine.UI;

İlk olarak bu kütüphaneyi script dosyamıza ekliyoruz.Böylece artık arayüz elemanlarımızı kontrol edebileceğiz.

public Transform BaslangicNoktasi;
public Transform BitisNoktasi;
public LineRenderer Lazer;

Şimdi lazer için gerekli değişkenlerimizi oluşturmakla başlayalım.İlk ve ikinci satırlarda, Transform değişkenleri oluşturuyoruz.Bu değişkenler sahnemizdeki lazerlerin başlangıç ve bitiş konumlarını kontrol edecekler.Son satırda ise, LineRenderer değişkeni oluşturuyoruz.Bu değişkenle ise, lazer ışınımızı kontrol edeceğiz.

public bool MaskeAktif;
public GameObject GeceGorus;
public Camera Kamera;
public LayerMask GeceGorusuAcik;
public LayerMask GeceGorusuKapali;

Ardından gece görüşü için değişkenlerimizi oluşturuyoruz.İlk satırda bool türünde bir değişken oluşturuyoruz.Bu değişken ile, normal ve gece görüşü arasında geçiş yapabileceğiz.İkinci satırda GameObject değişkeni oluşturuyoruz.Bu değişken ile de, gece görüş gözlüğümüzü kontrol edebileceğiz.

Üçüncü satırda Camera değişkeni oluşturuyoruz.Bu değişken ile kameramızın kontrolünü sağlayabileceğiz.Dördüncü ve beşinci satırlarda ise, LayerMask değişkenleri oluşturuyoruz.Bu değişkenler ile de, kameramızda etkin olan layer yani katmanların görünürlüğünü kontrol edebileceğiz.

public Light AlarmIsigi;
public float isikSiddeti;
public bool IsikAcik;
public bool IsikKapali;

Şimdi alarm ışığı için gerekli olan değişkenlerimizi oluşturalım.İlk satırda Light değişkeni oluşturuyoruz.Bu değişken ile, alarm ışığımızı kontrol edebileceğiz.İkinci satırda float türünde bir değişken oluşturuyoruz.Bu değişken ile alarm ışığının şiddetini kontrol edebileceğiz.Üçüncü ve dördüncü satırlarda ise, bool türünde değişkenler oluşturuyoruz.Bu değişkenleri ise, alarm ışığının şiddetini azaltıp/çoğaltmak için kullanacağız.

public AudioSource Ses;
public AudioClip AlarmSesi;
public bool SesAcik;

Alarm sesi için değişlenlerimizi oluşturuyoruz.İlk satırda, AudioSource değişkeni oluşturuyoruz.Bu değişken ile, sahnedeki sesi kontrol edebileceğiz.İkinci satırda, AudioClip değişkeni oluşturuyoruz.Bu değişken ile de, sahnede hangi sesin çalacağını kontrol edeceğiz.Son satırda ise, bool türünde bir değişken oluşturuyoruz.Bu değişkenle, alarm sesini açıp/kapatabileceğiz.

private GameObject KapiKontrol;
public kapi KapiScripti;

Son olarak ise, ilk script dosyamızdan veri çekmek için değişkenlerimizi oluşturuyoruz.İlk satırda GameObject değişkeni oluşturuyoruz.Bu değişkenle script dosyasının ekli olduğu nesneye erişiyoruz.Son satırda ise, “kapi” adındaki script dosyasına erişmek için bir değişken oluşturuyoruz.Böylece bu script dosyasından veri çekebileceğiz.

Lazer ışını nasıl yapılır?

Lazer = GetComponent<LineRenderer>();
Lazer.SetWidth(0.05f, 0.05f);
Lazer.SetPosition(0, BaslangicNoktasi.position);
Lazer.SetPosition(1, BitisNoktasi.position);
KapiKontrol =  GameObject.FindWithTag ("kasaKapagi");
KapiScripti = KapiKontrol.GetComponent<kapi>();

İlk olarak bu kodları start() fonksiyonumuzun içerisine yazıyoruz.İlk satırda değişkenimize, bu script dosyasının ekli olduğu nesnedeki LineRenderer bileşenini tanımlıyoruz.İkinci satırda SetWidth özelliğinin değerini belirliyoruz.Parantez içerisindeki değerler, lazer ışığımızın genişliğini ayarlıyor.Üçüncü ve dördüncü satırlarda ise, SetPosition ile lazerlerimizin pozisyonları için hedef noktaları belirliyoruz.

Bizim oluşturacağımız lazerlerin başlangıç ve bitiş olarak iki noktası olacağı için, buna uygun olarak oluşturuyoruz.Örneğin lazer ışınımız bir aynaya isabet edip başka bir noktaya devam etseydi, bu noktaları çoğaltabilirdik.Dördüncü ve beşinci satırlarda ise, ilk script dosyamıza erişmek için değişkenlerimize değerlerini tanımlıyoruz.

void LazerDenetimi() {
   RaycastHit hit;
   if (Physics.Linecast(BaslangicNoktasi.position, BitisNoktasi.position, out hit)) {
      Debug.DrawLine(BaslangicNoktasi.position, BitisNoktasi.position, Color.green);
      if (hit.collider.tag == "Oyuncu") {
         IsikAcik = true;
         SesAcik = true;
         KapiScripti.KapiyiAc = false;
      }
   }
}

Şimdi yeni bir fonksiyon oluşturuyoruz.İkinci satırda, RaycastHit değişkeni oluşturuyoruz.Üçüncü satırlarda bir koşul oluşturuyoruz.Burada bir Linecast fonksiyonu kullanıyoruz.Bu fonksiyon ile ayrı bir yazı yazacağım için şimdilik detaya girmiyorum.Kısaca, iki nokta arasında hedef nesne ile çarpışma olup olmadığını kontrol edebiliyoruz.

Dördüncü satırda ise, DrawLine fonksiyonu ile hedef noktalar arasında çizgi çizebiliyoruz.Bu fonksiyon önemlidir.Çünkü sahnede ışınların yerini ve çarpışma olup olmadığını daha kolay kontrol edebiliyoruz.Beşinci satırda, yeni bir koşul oluşturuyoruz.Eğer çarpışmanın gerçekleştiği nesnenin etiketi “Oyuncu” ise, koşulumuz aktif oluyor.

Altıncı ve yedinci satırlarda, değişkenlerimizin değerlerini true olarak değiştiriyoruz.Bunlardan biri alarm ışığımızı kontrol ederken değeri ise, alarm sesini kontrol ediyor.Sekizinci satırda ise, ilk script dosyamızdaki “KapiyiAc” değişkenimize ulaşıyoruz ve değerini false olarak belirliyoruz.

Gece görüş sistemi nasıl yapılır?

MaskeAktif = false;
GeceGorus = GameObject.FindWithTag("geceGorusu");
GeceGorus.GetComponent<Image>().color = new Color32(255,255,225,0);
Kamera = Camera.main;
Kamera.cullingMask = GeceGorusuKapali;

Evet şimdi bu kodları start() fonksiyonumuzun devamına yazıyoruz.İlk satırda değişkenimizin değerini false olarak belirliyoruz.İkinci satırda değişkenimize, etiketi “geceGorusu” olan nesneyi tanımlıyoruz.Üçüncü satırda ise, etiketi “geceGorusu” olan nesnenin Image bileşenine erişiyoruz ve color değerini değiştiriyoruz.Burada aslında sadece Alpha yani saydamlık değeri ile oynuyoruz.Böylece kamerada gözükmemiş oluyor.

Dördüncü satırda değişkenimize, ana kameramızı tanımlıyoruz.Bu sayede kameramızı kontrol edebileceğiz.Son satırda ise, kameramızın cullingMask özelliğine erişiyoruz.Bu özellik ile kamerada gözüken layer yani katmanları kontrol edebiliyoruz.Burada da, kendi ayarladığımız layer yani katmanları kameramıza tanımlıyoruz.

void GeceGorusKontrolu() {
   if(Input.GetKeyDown(KeyCode.Z)) {
      MaskeAktif = !MaskeAktif;
   }
   if(MaskeAktif) {
      GeceGorus.GetComponent<Image>().color = new Color32(255,255,225,255);
      Kamera.cullingMask = GeceGorusuAcik;
   }else {
      GeceGorus.GetComponent<Image>().color = new Color32(255,255,225,0);
      Kamera.cullingMask = GeceGorusuKapali;
   }
}

Şimdi yeni bir fonksiyon oluşturuyoruz.Bu fonksiyon ile, gece görüş sistemini ayarlayabileceğiz.İkinci satırda yeni bir koşul oluşturuyoruz.Eğer klavyeden “Z” tuşuna basarsak, koşulumuz aktif oluyor.Üçüncü satırda, değişkenimizin değerini kendi değerine eşitliyoruz.Fakat başına ünlem işaret “!” koyarak, her tuşa basışta aldığı değeri değiştirebiliyoruz.Bu yönteme birden fazla yazıda değinmiştim.

Beşinci satırda yeni bir koşul daha oluşturuyoruz.Eğer “MaskeAktif” değişkenini değeri true ise, koşulumuz aktif oluyor.Altıncı satırda, etiketi “geceGorusu” olan nesnenin Image bileşenine erişiyoruz ve color değerini değiştiriyoruz.Burada saydamlık yani Alpha değerini %100 olarak belirliyoruz.Yedinci satırda ise, cullingMask değerini “GeceGorusuAcik” değişkenine eşitliyoruz.

Koşulumuzun else kısmın ise, yine yukarıdaki işlemleri gerçekleştiriyoruz.Yalnız, color değerinde bulunan Alpha yani saydamlık değerini sıfıra indiriyoruz ve cullingMask değerini, “GeceGorusuKapali” değişkenine eşitliyoruz.Böylece gece görüşünü kapatabiliyoruz.

Alarm ışığı nasıl yapılır?

AlarmIsigi = GameObject.FindWithTag("alarm").GetComponent<Light>();
AlarmIsigi.intensity = 0;
isikSiddeti = 0;
IsikAcik = false;
IsikKapali = false;

Şimdi bu kodları start() fonksiyonumuzun devamına yapıyoruz.İlk satırda değişkenimize, etiketi “alarm” olan nesnemizin Light bileşenini tanımlıyoruz.İkinci satırda ise, bu değişkenin intensity değerini sıfıra “0” eşitliyoruz.Üçüncü satırda, değişkenimizin değerini sıfır “0” olarak belirliyoruz.Dördüncü ve beşinci satırlardaki değişkenlerin değerlerini ise, false olarak belirliyoruz.

void AlarmIsikKontrolu() {
   if (IsikAcik) {
      isikSiddeti += Time.deltaTime * 3f;
      AlarmIsigi.intensity = isikSiddeti;
      if (isikSiddeti >= 3f) {
         isikSiddeti = 3f;
         IsikAcik = false;
         IsikKapali = true;
      }
   }
}

Şimdi yeni bir fonksiyon oluşturuyoruz.İkinci satırda bir koşul oluşturuyoruz.Eğer değişkenimizin değeri true ise, koşulumuz aktif oluyor.Üçüncü satırda, değişkenimizin değerini “+=” ile arttırıyoruz.Tabi bunu yaparken, Time.deltaTime fonksiyonunu kullanıyoruz ve istediğimiz bir hız değeri ile çarpıyoruz.Dördüncü satırda ise değişkenimizin intensity değerini, bu değişkene eşitliyoruz.

Beşinci satırda yeni bir koşul oluşturuyoruz.Eğer “isikSiddeti” değişkeninin değeri üçe “3” eşit veya üçten büyükse, koşulumuz aktif oluyor.Altıncı satırda, “isikSiddeti” değişkeninin değeri üçe “3” sabitliyoruz.Yedinci satırda ise, değişkenimizin değerini false yapıyoruz.Sekizinci satırda ise bu sefer değişkenimizin değerini true olarak belirliyoruz.

if(IsikKapali) {
   isikSiddeti -= Time.deltaTime * 3f;
   AlarmIsigi.intensity = isikSiddeti;
   if (isikSiddeti <= 0f) {
      isikSiddeti = 0f;
      IsikKapali = false;
      IsikAcik = true;
   }
}

Yine fonksiyonumuzun devamına bu kodları yazıyoruz.Tekrar yeni bir koşul oluşturuyoruz.Eğer değişkenimizin değeri true ise koşulumuz aktif oluyor.İkinci satırda, değişkenimizin değerini “-=” ile azaltıyoruz.Yine Time.deltaTime fonksiyonunu kullanıyoruz ve istediğimiz bir hız değeri ile çarpıyoruz.Üçüncü satırda ise değişkenimizin intensity değerini, bu değişkene eşitliyoruz.

Dördüncü satırda yeni bir koşul oluşturuyoruz.Eğer “isikSiddeti” değişkeninin değeri sıfıra “0” eşit veya sıfırdan küçükse, koşulumuz aktif oluyor.Beşinci satırda, “isikSiddeti” değişkeninin değeri sıfıra “0” sabitliyoruz.Altıncı satırda ise, değişkenimizin değerini false yapıyoruz.Yedinci satırda ise bu sefer değişkenimizin değerini true olarak belirliyoruz.

Alarm sesi nasıl yapılır?

Ses = GameObject.FindWithTag("ses").GetComponent<AudioSource>();
SesAcik = false;

Şimdi start() fonksiyonumuzun devamına bu kodları yazıyoruz.İlk satırda değişkenimize, etiketi “ses” olan nesnenin AudioSource bileşenini tanımlıyoruz.Son satırda ise, değişkenimizin değerini false olarak belirliyoruz.

void AlarmSesKontrolu() {
   if (SesAcik && !Ses.isPlaying) {
      Ses.clip = AlarmSesi;
      Ses.Play();
   }
}

Evet şimdi yeni bir fonksiyon daha oluşturuyoruz.İkinci satırda, bir koşul oluşturuyoruz.Eğer değişkenimizin değeri true ve isPlaying özelliği false ise, koşulumuz aktif oluyor.Üçüncü satırda değişkenimizin clip değerine, “AlarmSesi” değişkenimizin değerine eşitliyoruz.Dördüncü satırda ise, Play fonksiyonu ile alarm sesimizi çalıyoruz.

Evet bu projemizin de sonuna geldik.Bu yazı diğerlerinden biraz daha uzun oldu biliyorum fakat yazının her bir yerinde önemli bilgiler olduğu için kısaltmadım.Şimdi oluşturduğumuz bu iki C# Script dosyasını ilgili yerlerine ekleyelim.İlk script dosyamızı Hierarchy penceresinde, kasamızın kapısının üzerine sürükleyerek bırakıyoruz.İkinci script dosyamızı ise, sahnemizde bulunan her bir lazer nesnemizin üzerine sürükleyerek bırakıyoruz.Evet bu dersimizde sonuna geldik.Bir sonraki ders görüşmek üzere…

Unity-Lazerli-Güvenlik-Sistemi-Yapımı-how-to-make-simple-laser