Unity’de Ayna Yapımı

Unity’de Ayna Yapımı

19 Ocak 2020 0 Yazar: Ahmet Güler

Merhaba, bir önceki dersimizde kamera açısını nasıl değiştirebileceğimizi öğrenmiştik.Böylelikle projelerimizde tek bir kamera kullanarak istediğimiz açıdan bakmasını sağlayabiliyorduk.Bugünkü yazımızda ise, Unity‘de ayna yapımını öğreneceğiz.Ayna yapımı genelde zor olarak görülüyor.Ancak sizde birazdan göreceksiniz ki, aslında son derece basit bir işlem ile aynamızı yapacağız.Evet yeni bir proje oluşturarak, yazımıza başlayalım.

Projemizde kullanılacak malzemeler.

Normalde tek bir yüzey üzerinden ayna yapımını anlatacaktım.Fakat biraz daha ileri giderek, dört farklı yüzey üzerinden bu projeyi yapacağız.Bunun hem daha iyi anlayabilmeniz hemde sahnemiz daha iyi görünsün diye yapacağız.Senaryomuz ise, bir oda olacak ve dört duvarına birer ayna yerleştireceğiz.Daha sonra ortaya koyacağımız nesneleri otomatik (yazacağımız kodlar ile) olarak yerlerinde döndürerek, dört farklı açıdan yansımalarına bakacağız.

Evet şimdi sahnemize nesnelerimizi yerleştirmeye başlayalım.Öncelikle bir adet Plane nesnesi ve dört adet Cube nesnesi oluşturuyoruz.Bunları sahnemize nasıl yerleştireceğinizi diğer derslerden öğrendiğimiz için hızlı geçiyorum.Daha sonra Plane nesnemizin etrafına Cube nesnelerimizi kullanarak dört köşeli bir duvar yapıyoruz.Şimdi bu zemin ve duvarlarımıza Project panelinden material dosyaları oluşturarak renklerini veriyoruz.Gelelim bu duvarlara aynaları yerleştirmeye.

Bunun için daha önceki yazılarımda kullanmadığım bir nesne kullanacağım.Bu nesnemizin adı Quad.Bu nesnemizin özelliği ise, sadece tek bir yüzeyinin gözükmesidir.Yani arkadan baktığımız zaman nesnemizi göremiyoruz.Bu projede kullanmak için bence en uygun nesne budur.Hierarchy penceresinde sırasıyla duvarlarımızın üzerine sağ tıklayarak, 3D Object > Quad seçimini yapalım.Daha sonra bu nesnemizi her bir duvara oturacak şekilde ayarlayalım.Şimdi aynalarımız hazır.

unity_ayna_yansıtıcı_yapımı

Ancak beyaz bir yüzey görüyoruz.Buna yansıtıcı özelliğini vermemiz gerekiyor.Bunun içinde yine Hierarchy penceresinde sırasıyla aynalarımızın üzerine sağ tıklayarak, Camera seçimini yapıyoruz.Eğer eklediğimiz kameraların arkaya bakıyorsa, rotation bölümünden y ekseninin ayarını “180” olarak değiştiriyoruz.Şimdi kameralarımızda eklendi.Artık yapmamız gereken tek bir işlem kaldı.

Project panelinde sağ tıklayarak sırasıyla, Create > Render Texture seçimini yapıyoruz.Bu işlemi dört aynamız olduğu için dört kere tekrarlıyoruz.Daha sonra sırasıyla tutup, ayna nesnelerimizin üzerine bırakıyoruz.Son olarak, kamera nesnelerimizi seçiyoruz ve sağ taraftaki Insepector penceresinde Camera bileşenimizde bulunan Target Texture bölümene aynı Render Texture nesnelerimiz sürükleyip bırakıyoruz.

unity_ayna_yansıtıcı_yapımı

Nesnelerimize hareket kazandıralım.

Aslında aynamızı oluşturmuş olduk.Bundan sonraki işlemleri yapmanıza gerek yok.Ama dört tane aynamız olduğu için hareketli bir nesne oluşturarak,size değişimi her açıdan göstermek istedim.Yazımıza devam edelim.Bir C# Script dosyası oluşturuyoruz.

gameObject.transform.Rotate(0.0f, 0.0f, 90.0f * Time.deltaTime);

Update() fonksiyonu içerisine bu kodu yazıyoruz.Böylelikle script dosyasını eklediğimiz nesnenin z ekseninde sürekli dönmesini sağlayacağız.Time.deltaTime ile neden çarptığımızı daha önceki yazılarda değinmiştik.Burada da değinecek olursak, böylelikle her karede aynı hızda çalışmasını sağlıyoruz.İsterseniz bu fonksiyonu silerek aralarındaki farkı görebilirsiniz.

Evet kodlama kısmı bu kadardı.Şimdi hareket etmesini istediğimiz nesnenin üzerine script dosyamızı sürükleyip bırakıyoruz.Unutmadan start() fonksiyonunu kullanmayacağımız için silmenizde yarar var.Çünkü projenizin derleme işlemi sırasında bu fonksiyonada bakacağı için ekstra ve gereksiz bir işlem gücü harcamış oluyoruz.

unity_ayna_yansıtıcı_yapımı