Unity’de Şifreli Kapı Yapımı

Unity’de Şifreli Kapı Yapımı

14 Haziran 2020 0 Yazar: Ahmet Güler

Merhaba, bir önceki dersimizde Unity ile sağlık barının nasıl yapıldığını öğrenmiştik.Böylelikle yapmış olduğumuz projelerde, can barı sistemi ile çeşitli mekanikler geliştirebiliyorduk.Bugünkü dersimizde ise, Unity ile şifreli kapı yapımına bakacağız.Bu mekaniği yapmanın birden fazla yolu bulunuyor.Ben fiziksel bir kilit kullanmak yerine, dijital olarak kapıyı açmayı göstereceğim.Belki ilerde, diğer yollarını da anlatabilirim.Evet şimdi dersimize başlayabiliriz.

Sahnemizi hazırlamaya başlayalım.

Evet bu projemizde kullanacağımız senaryo gayet basit olacak.Sahnemizde kilitli olan bir kapı olacak.Biz arayüz yardımı ile numaratik tuşlardan, doğru şifreyi girdiğimiz takdirde ise kapımız otomatik olarak açılacak.Şimdi sahnemize bir Plane nesnesi ekliyoruz.Bu nesne üzerinde yürüdüğümüz zemini oluşturacak.Daha sonra kapı modelimizi projemize dahil ediyoruz.Kapı modelimizi projeye dahil ettikten sonra Scene penceresinde bulunan araçlar yardımı ile istediğimiz gibi düzenliyoruz.

Daha sonra bu nesnemize bir Collider bileşeni eklememiz gerekiyor.Bunu yapmamızın nedeni, projemizi başlattığımız zaman kapının içinden geçmeyi engellemek içindir.Kapı nesnemizi seçtikten sonra, Inspector penceresinde bulunan Add Component butonuna basıyoruz.Daha sonra Mesh Collider yazarak, nesnemize bu bileşeni ekliyoruz.Benim seçtiğim kapı modelinde hem çerçeve hemde kapı olduğu için, ben bu işlemi iki kere tekrarlıyorum.

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password

Evet şimdi kapımıza yaklaştığımız zaman, arayüz panelini tetiklememiz gerekiyor.Bunun içinde Hierarchy penceresinde, kapımızın ebeveyn nesnesini (parent) seçiyoruz.Sonra Inspector penceresinde bulunan Add Component butonuna basıyoruz.Daha sonra ise Box Collider bileşenini nesnemize ekliyoruz.Bu bileşeni ekledikten sonra, Scene penceresinden sınırları tekrar ayarlamamız gerekiyor.

Bunu yapmak içinde Box Collider bileşeninde bulunan Edit Collider butonuna basıyoruz.Daha sonra Scene penceresinde bulunan araçlar yardımı ile çarpışma sınırını öne doğru genişletiyoruz.Bunu yapmamızın nedeni, oyuncu ile kapı arasında belirli bir mesafe olduğu zaman arayüz panelimizi tetiklemek içindir.İstediğimiz mesafeyi ayarladıktan sonra, yine Box Collider bileşeninde bulunan isTrigger özelliğini aktif ediyoruz.Böylece bu sınırın içerisine girebileceğiz.Aksi takdirde görünmez bir duvara çarpmış gibi olacaktık.

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password

Bilgi mesajı veren arayüzü oluşturmaya başlayalım.

Evet şimdi, sahnemize bir Canvas nesnesi oluşturuyoruz.Daha sonra Inspector penceresinde 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 Full HD bir çözünürlük girmenizden yanadır.

Evet bu ayarları, farklı çözünürlükte bozulmayan bir arayüz görmek için yaptık.Şimdi devam edebiliriz.Canvas nesnemizin içerisine bir Panel nesnesi ekliyoruz.Bu Panel nesnesini Scene penceresinde bulunan çapaları (anchors) kullanarak, kameramızın altına doğru konumlandırıyoruz.Arayüz elemanlarını daha önceki yazılarımda detaylı olarak anlattığım için tekrar girmiyorum.

Daha sonra bu Panel nesnemize istediğimiz bir rengi veriyoruz.Şimdi ekranda belirecek mesajı oluşturmaya başlayabiliriz.Bunu yapmak içinde, Panel nesnemizin içerisine bir Text nesnesi oluşturuyoruz.Yine Scene penceresinde bulunan çapaları (anchors) kullanarak, konumu ayarlıyoruz.Buraya yazdığınız yazı çok küçük görünecektir.Bunu düzeltmek için, Text bileşeninde bulunan Best Fit seçeneğini aktif etmeniz gerekiyor.

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password

Şifre panelini oluşturmaya başlayalım.

Şimdi sahnemize ikinci bir Canvas oluşturuyoruz.İlk Canvas nesnemiz üzerinde yaptığımız ayarları, bu Canvas nesnemiz içinde yapıyoruz.Daha sonra bir Panel ekliyoruz.Bu nesneyi seçtikten sonra, Inspector penceresinde bulunan Source Image bölümüne isterseniz bir resimde ekleyebilirsiniz.Yada burayı boş bırakarak, Panel nesnenizin rengini de değiştirebilirsiniz.Ben bir resim kullanmayı tercih ettim.

Şimdi Panel nesnemizin içerisine bir Image nesnesi oluşturuyoruz.Bu nesneye numaratik tuşların resmini ekleyeceğiz.İnternette bir sürü seçeneğiniz mevcut.İstediğiniz birini kullanabilirsiniz.Burada dikkat etmeniz gereken şey seçtiğiniz resmi projenize dahil ettikten sonra, Inspector penceresinde bulunan Texture Type ayarını Sprite (2D and UI) seçeneğine getirmenizdir.

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password

Bu Image nesnesi bizim sadece arkaplan resmimizi oluşturacak.Yani pasif bir nesne olarak görsel amaçlı bir görev görecek.Bunu dinamik hale getirmemiz gerekiyor.Nasıl yapacağımıza gelecek oluyorsak, her bir tuş üzerine bir Button nesnesi ekleyeceğiz.Şimdi Image nesnemizin içerisine bir Button nesnesi oluşturuyoruz.Eklediğimiz bu Button nesnesini Scene penceresinden ayarlamamız gerekiyor.

Bunu yapmak için, Scene penceresinde bulunan çapaları (anchors) kullanarak, ilgili tuşun üzerine gelecek şekilde konumu ayarlıyoruz.Bunu yaptıktan sonra, Text nesnesinde bulunan yazıyı siliyoruz.Çünkü arkaplan olarak kullandığımız resimde zaten tuş numaraları yazıyor.Şimdi bu Button nesnemizi kopyalıyoruz ve aynı işlemleri diğer tuşlar içinde yapıyoruz.

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password

Giriş ekranını oluşturmaya başlayalım.

Evet numaratik tuş panelimizi hazırladık.Şimdi bu tuşlara bastığımız zaman bize bilgi verecek ekranımızı hazırlamaya başlayabiliriz.Bunun için Canvas nesnemizin içerisinde InputField nesnesi oluşturuyoruz.Daha sonra Scene penceresinde bulunan çapaları (anchors) kullanarak, InputField nesnemizin konumu ayarlıyoruz.Bu nesnemiz üzerinde birkaç değişiklik yapmamız gerekiyor.

Inspector penceresinde, Input Field bileşeninde bulunan Character Limit değerini istediğimiz gibi ayarlıyoruz.Örneğin ben dört “4” haneli bir şifre oluşturacağım için, buraya bu değeri yazıyorum.Daha sonra hemen aşağıda bulunan Content Type özelliğini Integer Number seçeneğine getiriyoruz.Böylece InputField nesnemizin aldığı değerler sadece rakamlardan oluşacaktır.Son olarak, Read Only seçeneğini aktif hale getiriyoruz.Bu seçenek ile, InputField nesnemize dışarıdan bir değer giremeyeceğiz.

Şimdi InputField nesnemizin altında bulunan Placeholder nesnesine geliyoruz.Bu nesnenin Text bileşeninde bulunan bölüme, herhangi bir değer yoksa göstereceği mesajı yazıyoruz.Yine burada bulunan yazının boyutunu Best Fit özelliğini aktif hale getirerek ayarlayabilirsiniz.Son olarak Text nesnesi seçiyoruz ve aldığı değeri siliyoruz.Bunu yapmamızın nedeni ise, bu bölüme kod ile kontrol edeceğimiz içindir.

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password

Şifre panelin kodlarını yazmaya başlayalım.

Evet sahnemizi hazırladık.Şimdi gereken kodları yazmaya başlayabiliriz.Bunun için iki adet C# Script dosyası oluşturacağız.Şimdi ilk script dosyamızı oluşturuyoruz.Bu script dosyası ile şifre panelini kontrol edeceğiz.Script dosyamızı editör yardımı ile açalım ve kodlarımızı yazmaya başlayalım.

using UnityEngine.UI;

İlk olarak bu kütüphaneyi script dosyamıza dahil ediyoruz.Bu kütüphane ile, arayüz (UI) elemanlarımızı kontrol edebileceğiz.

public string GirilenSifre;
public int DogruSifre;
public InputField SifreyiYazdir;
public Text BilgiMesaji;
public GameObject TusTakimi;
public bool kapiKontrolu;

Şimdi script dosyamızda kullanacağımız değişkenleri oluşturuyoruz.İlk satırda string türünde bir değişken oluşturuyoruz.Bu değişken ile, yazdığımız şifreyi kontrol edeceğiz.İkinci satırda int (integer) türünde bir değişken oluşturuyoruz.Bu değişkenin amacı ise, kapımızın doğru şifresini oluşturmaktır.Üçüncü satırda bir InputField değişkeni oluşturuyoruz.Bu değişken ile giriş ekranını kontrol edeceğiz.

Dördüncü satırda, Text değişkeni oluşturuyoruz.Bu değişken ile Placeholder nesnemizi kontrol edeceğiz.Beşinci satırda, GameObject değişkeni oluşturuyoruz.Bu değişkenin amacı ise, arayüz (UI) panelini kontrol etmektir.Son satırda ise, bool türünde bir değişken oluşturuyoruz.Bu değişken ile şifremiz doğru olması halinde, kapımızın açılmasını kontrol edeceğiz.

DogruSifre = 5790;
SifreyiYazdir = GameObject.FindWithTag ("sifre_yazdir").GetComponent<InputField> ();
BilgiMesaji = GameObject.FindWithTag ("mesaj").GetComponent<Text> ();
TusTakimi = GameObject.FindWithTag ("panel");
kapiKontrolu = false;
TusTakimi.SetActive(false);

Evet şimdi start() fonksiyonumuzun içerisine bu kodları yazıyoruz.İlk satırda bulunan değişkenimize bir değer veriyoruz.Ben kapının doğru şifresini “5790” olarak belirledim.İkinci satırda bulunan değişkene ise etiketi “sifre_yazdir” olan nesnenin, InputField bileşenini eşitliyoruz.Üçüncü satırda bulunan değişkene etiketi “mesaj” olan nesnenin, Text bileşenini eşitliyoruz.Böylece her iki bileşeni de artık kontrol edebileceğiz.

Dördüncü satırda bulunan değişkene, etiketi “panel” olan nesneyi tanımlıyoruz.Bunu yaptıktan sonra artık arayüzümüzü kontrol edebileceğiz.Beşinci satırda bulunan değişkenimizin değerini false olarak belirliyoruz.Çünkü başlangıçta kapımız kapalı olacağı için, değeri bu şekilde olmalıdır.Son satırda ise, “TusTakimi” değişkenimizde tanımlı olan nesneyi sahnemizde pasif konuma getiriyoruz.Yani bu nesneyi gizlemiş oluyoruz.

public void SifrePaneli (int Tus) {
   switch (Tus) {
   case 0 :
      if (GirilenSifre.Length < 4) {
         GirilenSifre += "0";
         SifreyiYazdir.text = GirilenSifre;
      }
      break;
   }
}

Şimdi yeni bir parametreli fonksiyon oluşturuyoruz.Bu fonksiyonumuz ile Şifre panelinde bastığımız tuşları algılayıp ekrana yazdırabileceğiz.İlk satırda parantez içerisinde, int (integer) türünde bir değişken oluşturuyoruz.Bu bizim parametremizi oluşturacak.İkinci satırda switch-case yapısını görüyorsunuz.Bunu if-else yapısı ile de yapabilirdik.Ama yapmak istediğimiz mekaniğe, bu yapı daha yakın olduğu için bunu seçtim.Üçüncü satırda, eğer “Tus” değişkeninin değeri sıfır “0” ise içeriye giriyoruz.Değilse aramaya devam ediyoruz.

Dördüncü satırda bu sefer bir if-else yapısı görüyoruz.Eğer “GirilenSifre” değişkeninin aldığı değer, dörtten “4” küçük ise koşulumuz doğru oluyor.Beşinci satırda, “GirilenSifre” değişkenimizin değerine sıfırı “0” ekliyoruz.Burası önemli, çünkü bu değişkenin değerini silip sıfır “0” yapmıyoruz.Onun yerine, “+=” ile aldığı değerler “345” ise yanına sıfır “0” ekliyoruz.Altıncı satırda “SifreyiYazdir” değişkenin değerine, “GirilenSifre” değişkeninin değerini eşitliyoruz.Böylece giriş ekranında, bastığımız rakamları görebiliyoruz.Sekizinci satırda ise, koşulu sonlandırıyoruz.

string BasilanTusuBul = Input.inputString;
int SayiyaDonustur;
if(int.TryParse(BasilanTusuBul, out SayiyaDonustur)) {
   SifrePaneli (SayiyaDonustur);
   if (GirilenSifre.Length < 4) {
      GirilenSifre += SayiyaDonustur;
      SifreyiYazdir.text = GirilenSifre;
   }
}

Şimdi bu kodları update() fonksiyonumuzun içerisine yazıyoruz.İlk satırda string türünde bir değişken oluşturuyoruz.Bu değişkene Input.inputString fonksiyonunu eşitliyoruz.Böylece artık sadece tuş paneli üzerinden değil, klavyeden de şifre yazabileceğiz.İkinci satırda int (integer) türünde bir değişken oluşturuyoruz.Bu değişkeni ise, klavyeden girişleri kontrol edip dönüştürmek için kullanacağız.

Üçüncü satırda, yeni bir koşul oluşturuyoruz.int.TryParse fonksiyonu ile girilen değeri int (integer) türüne çeviriyoruz.Dördüncü satırda ise “SifrePaneli” fonksiyonumuzu çağırıyoruz.Parantez içerisinde ise parametresine, “SayiyaDonustur” değişkeninin değerini yazıyoruz.Beşinci satırda yeni bir koşul daha oluşturuyoruz.

Eğer “GirilenSifre” değişkeninin aldığı değer, dörtten “4” küçük ise koşulumuz doğru oluyor.Altıncı satırda, “GirilenSifre” değişkenimizin değerine “+=” ile “SayiyaDonustur” değişkeninin değerini ekliyoruz.Yedinci satırda ise, “SifreyiYazdir” değişkenin değerine, “GirilenSifre” değişkeninin değerini eşitliyoruz.

public void SifreKontrolu (string Sifre) {
   int Donustur;
   if (int.TryParse (Sifre, out Donustur)) {
      if (Donustur == DogruSifre) {
         SifreyiYazdir.text = "";
         GirilenSifre = "";
         BilgiMesaji.text = "Doğru Şifre!";
         TusTakimi.SetActive(false);
         kapiKontrolu = true;
      } else {
         SifreyiYazdir.text = "";
         GirilenSifre = "";
         kapiKontrolu = false;
         BilgiMesaji.text = "Yanlış Şifre!";
      }
   }
}

Evet şimdi yeni bir fonksiyon daha oluşturuyoruz.Yine bu fonksiyonumuzda parametre içeriyor.İlk satırda parantez içerisinde string türünde bir değişken oluşturuyoruz.İkinci satırda int (integer) türünde bir değişken oluşturuyoruz.Üçüncü satırda, bir koşul oluşturuyoruz.int.TryParse fonksiyonu ile girilen değeri int (integer) türüne çeviriyoruz.Dördüncü satırda yeni bir koşul daha oluşturuyoruz.

Eğer “Donustur” ve “DogruSifre” değişkenlerinin değerleri eşit ise koşulumuz doğru oluyor.Beşinci satırda, “SifreyiYazdir” değişkeninin değerini siliyoruz.Altıncı satırda, “GirilenSifre” değişkeninin değerini siliyoruz.Yedinci satırda, “BilgiMesaji” değişkeninin değerini değiştiriyoruz.Sekizinci satırda ise, “TusTakimi” değişkenimizde tanımlı olan nesneyi sahnemizde pasif konuma getiriyoruz.

Dokuzuncu satırda, “kapiKontrolu” değişkenimizin değerini true olarak değiştiriyoruz.Eğer girdiğimiz şifre eşleşmiyor yani doğru değilse bu sefer else kısmına geçiyioruz.Onbirinci satırda, “SifreyiYazdir” değişkeninin değerini siliyoruz.Onikinci satırda, “GirilenSifre” değişkeninin değerini siliyoruz.Onüçüncü satırda, “kapiKontrolu” değişkenimizin değerini false olarak değiştiriyoruz.Ondördüncü satırda ise, “BilgiMesaji” değişkeninin değerini değiştiriyoruz.

if (GirilenSifre.Length == 4) {
   SifreKontrolu (GirilenSifre);
}

Şimdi update() fonksiyonumuzun içerisine bu kodları yazıyoruz.İlk satırda yeni bir koşul oluşturuyoruz.Eğer “GirilenSifre” değişkenimizin değeri, dörde “4” eşit ise koşulumu doğru oluyor.İkinci satırda ise, az önce oluşturduğumuz “SifreKontrolu” fonksiyonumuzu çağırıyoruz.Parantez içerisine ise parametre olarak, “GirilenSifre” değişkenimizin aldığı değeri eşitliyoruz.

Otomatik kapımızın kodlarını yazmaya başlayalım.

Evet şimdi ikinci script dosyamızı oluşturalım ve editör yardımı ile açalım.Bu script dosyası ile, kapımızı kontrol edeceğiz.

using UnityStandardAssets.Characters.FirstPerson;

Eğer Unity‘de bulunan hazır FirstPerson Prefab dosyasını kullanacak iseniz, bu kütüphaneyi script dosyanıza eklemeniz gerekiyor.Aksi takdirde kontrol edemeyiz.

public Transform Kapi;
private GameObject KapiKontrol;
public sifre SifreScripti;
private GameObject Oyuncu;
public FirstPersonController OyuncuScripti;
public GameObject BilgiMesaji;
public bool TusTakiminiAc;

Şimdi script dosyamızda kullanacağımız değişkenleri oluşturmaya başlayalım.İlk satırda, Transform değişkeni oluşturuyoruz.Bu değişken ile kapımızı kontrol edeceğiz.İkinci satırda GameObject değişkeni oluşturuyoruz.Bu değişken ile ilk script dosyasının olduğu nesneye erişeceğiz.Üçüncü satırda ise, “sifre” adındaki script dosyamızı tanımlıyoruz.Böylece ilk script dosyamızdan veri çekebileceğiz.

Dördüncü satırda GameObject değişkeni oluşturuyoruz.Bu değişken ile FirstPerson script dosyasının olduğu nesneye erişeceğiz.Beşinci satırda ise, “FirstPersonController” adındaki script dosyamızı tanımlıyoruz.Böylece FirstPerson script dosyanı kontrol edebileceğiz.Altıncı satırda, yeni bir GameObject değişkeni oluşturuyoruz.Bu değişken ile, ekranda gözükecek mesajı kontrol edeceğiz.Son satırda ise, bool türünden bir değişken oluşturuyoruz.Bu değişkenle ise, şifre arayüzünü kontrol edeceğiz.

Kapi = GameObject.FindWithTag ("kapi").transform.GetChild(1).gameObject.transform;
KapiKontrol =  GameObject.FindWithTag ("kapi_kontrol");
SifreScripti = KapiKontrol.GetComponent<sifre>();
Oyuncu = GameObject.FindWithTag ("Player");
OyuncuScripti = Oyuncu.GetComponent<FirstPersonController>();
BilgiMesaji = GameObject.FindWithTag ("panel2");
BilgiMesaji.SetActive(false);
TusTakiminiAc = false;

Evet şimdi bu kodları start() fonksiyonumuzun içerisine yazıyoruz.İlk satırda değişkenimize, etiketi “kapi” olan nesnenin alt nesnelerinden ikincisini eşitliyoruz.İkincisi olmasının nedeni, benim modelimde kapı nesnesi ikinci sırada yer alıyor.İkinci satırda ise değişkenimize, etiketi “kapi_kontrol” olan nesneyi eşitliyoruz.Üçüncü satırda değişkenimize, etiketi “kapi_kontrol” olan nesnenin “sifre” bileşenini eşitliyoruz.

Dördüncü satırda değişkenimize, etiketi “Player” olan nesneyi eşiliyoruz.Beşinci satırda değişkenimize ise, etiketi “Player” olan nesnenin “FirstPersonController” bileşenini eşitliyoruz.Altıncı satırda değişkenimize, etiketi “panel2” olan nesnemizi eşitliyoruz.Yedinci satırda ise, “BilgiMesaji” değişkenimizde tanımlı olan nesneyi sahnemizde pasif konuma getiriyoruz.Son satırda ise, değişkenimizin değerini false olarak belirliyoruz.

void OnTriggerEnter (Collider Kontrol) {
   if (Kontrol.tag == "Player" && !SifreScripti.kapiKontrolu) {
      BilgiMesaji.SetActive(true);
   }
}

Şimdi yeni bir OnTriggerEnter fonksiyonu oluşturuyoruz.İkinci satırda bir koşul oluşturuyoruz.Eğer nesnenin etiketi “Player” ve “kapiKontrolu” değişkeninin değeri false ise koşulumuz doğru oluyor.Üçüncü satırda ise, “BilgiMesaji” değişkenimizde tanımlı olan nesneyi sahnemizde aktif konuma getiriyoruz.

void OnTriggerExit (Collider Kontrol) {
   if (Kontrol.tag == "Player" && !SifreScripti.kapiKontrolu) {
      BilgiMesaji.SetActive(false);
   }
}

Şimdi yeni bir OnTriggerExit fonksiyonu oluşturuyoruz.İkinci satırda bir koşul oluşturuyoruz.Eğer nesnenin etiketi “Player” ve “kapiKontrolu” değişkeninin değeri false ise koşulumuz doğru oluyor.Üçüncü satırda ise, “BilgiMesaji” değişkenimizde tanımlı olan nesneyi sahnemizde pasif konuma getiriyoruz.

if (Input.GetKeyDown(KeyCode.E)) {
   TusTakiminiAc = true;
   if (TusTakiminiAc) {
      BilgiMesaji.SetActive(false);
      SifreScripti.TusTakimi.SetActive(true);
      OyuncuScripti.enabled = false;
   }
}

Evet bu kodları update() fonksiyonumuzun içerisine yazıyoruz.İlk satırda yeni bir koşul oluşturuyoruz.Eğer klavyeden “E” tuşuna basarsak, koşulumuz aktif oluyor.İkinci satırda, “TusTakiminiAc” değişkenimizin değerini true olarak değiştiriyoruz.Üçüncü satırda bir koşul daha oluşturuyoruz.Eğer “TusTakiminiAc” değişkenimizin değeri true ise, koşulumuz aktif oluyor.

Dördüncü satırda ise, “BilgiMesaji” değişkenimizde tanımlı olan nesneyi sahnemizde pasif konuma getiriyoruz.Beşinci satırda, “TusTakimi” değişkenimizde tanımlı olan nesneyi sahnemizde aktif konuma getiriyoruz.Altıncı satırda, “OyuncuScripti” değişkenimizi pasif duruma getiriyoruz.

if (SifreScripti.TusTakimi.activeInHierarchy) {
   Cursor.visible = true;
   Cursor.lockState = CursorLockMode.None;
}
else {
   OyuncuScripti.enabled = true;
}

Şimdi bu kodları update() fonksiyonumuzun içerisine yazıyoruz.İlk satırda bir koşul oluşturuyoruz.Eğer “TusTakimi” değişkenimizde tanımlı olan nesneyi sahnemizde aktif durumda ise koşulumuz çalışmaya başlıyor.Aktiflik kontrolünü ise, activeInHierarchy fonksiyonu ile gerçekleştiriyoruz.İkinci satırda, fare imlecimizi ekranda gösteriyoruz.Üçüncü satırda ise, fare imlecimizin kilidini kaldırıyoruz.Böylece ekranda hareket ettirebiliyoruz.Altıncı satırda ise, “OyuncuScripti” değişkenimizi aktif duruma getiriyoruz.

if (SifreScripti.kapiKontrolu) {
   Kapi.rotation = Quaternion.Lerp(Kapi.rotation, Quaternion.Euler(0, 0, -90f), Time.deltaTime * 0.8f);
   TusTakiminiAc = false;
}

Yine bu kodları update() fonksiyonumuzun içerisine yazıyoruz.İlk satırda bir koşul oluşturuyoruz.Eğer “kapiKontrolu” değişkenimizin değeri true ise koşulumuz aktif oluyor.İkinci satırda ise “Kapi” değişkenimizin tanımlı nesnenin açısını, Quaternion.Lerp fonksiyonu ile değiştiriyoruz.Bu fonksiyonun aldığı parametrelere bakalım.

Parantez içerisinde ilk olarak, “Kapi” değişkenimize tanımlı nesnenin açısı bulunuyor.İkinci olarak, nesnenin almasını istediğimiz yeni açı bulunuyor.Burada ben, z ekseninde -90 derece açılmasını istedim.Üçüncü olarak ise, yeni açıya giderken ki hızı bulunuyor.Tabi bu hızı, Time.deltaTime fonksiyonu ile çarpıyoruz.Böylece kare hızları her cihazda eşit oluyor.Üçüncü satırda ise, “TusTakiminiAc” değişkenimizin değerini false yapıyoruz.

Evet bu projemizi de tamamlamış olduk.Şimdi yazdığımız iki C# Script dosyasını ilgili yerlerine ekleyelim.İlk script dosyamız için, yeni bir boş nesne oluşturuyoruz ve üzerine sürükleyerek bırakıyoruz.İkinci script dosyamızı ise, kapı modelimizin ebeveyn nesnesinin üzerine sürükleyerek bırakıyoruz.Artık test etmeye hazırız.Bu arada ben ekstra basit özelliklerde ekledim.Bunlara yazıda yer vermedim çünkü odak noktamızda değillerdi.Evet bir sonraki yazıda görüşmek üzere…

 

Unity-Şifreli-Kapı-Yapımı-How-to-open-a-unlock-Doors-with-password