17 Eylül 2018 Pazartesi

Vibrance ve Saturation Farkı

Satürasyon(Saturation), görsellerin bütün piksellerinin renk doygunluğunun arttırılması anlamına gelir. Fazla uygulanmış satürasyon pikselleşmeye sebep olarak kaliteyi düşürür. Ayrıca fotoğrafın turunculaşmasına sebep olabilir.

Vibrans(Vibrance),  Vibrans ise satürasyonla aynı prensiple çalışır ancak zaten yeterince doygun olan piksellere etki etmez. Yani zaten fazla doygun olan renkler daha da doygunlaşmayacaktır

17 Ağustos 2018 Cuma

Unity Android Dersleri (1) - Android SDK Kurulumu


Gerekli Kaynakları Edinme 

Unity ile Android oyun yapımı derslerine hoşgeldiniz.
Unity3D üzerinde Android oyunları yapmak için bilgisayarınızda Unity3D, Android SDK 'i ve JAVA JDK 'i kurulu olmalıdır. Bu bölümde Unity3D ile Android Oyunları yapabilmek için bu SDK'lerı kuracağız ve çalışma ortamınızı hazırlayacağız.
Hızlı İndirme Butonları:





12 Ağustos 2018 Pazar

Unity C# Callback Fonksiyonları

Bu yazımda Callback fonksiyonlarını anlatıyorum.
Unityde bazı fonksiyonları neden update içinde ya da başka fonksiyonların içinde çağıramıyoruz?
Neden bunları ayrı bir şekilde yazıyoruz? Update içinde ya da kendi fonksiyonlarımız içinde direkt kullansaydık daha kolay olmaz mıydı?

10 Ağustos 2018 Cuma

Alfa kanalı/alpha channel nedir?

Alpha kanalı bir resimdeki bir piksel ya da bir bölgenin ne kadar saydam olacağını belirleyen kanaldır.Arkaplan kesme ve saydamlık ayarlamada kullanılır.
Bir pikselin bir diğer piksel üzerine düştüğünde ortaya çıkacak rengin oranını belirler.Bunu aşağıdaki görselleri inceleyerek çok daha rahat anlayabilirsiniz.

8 Ağustos 2018 Çarşamba

Unity float değerini belirli bir ondalık sayıya yuvarlama


Unityde 3,14159265 gibi bir sayıyı 3,1415 şeklinde kesmek isterseniz bunu yaparken bir sorunla karşılaşabilirsiniz. Çünkü unityde Mathf.Round fonksiyonu bunu yapmıyor. Peki bunun yerine ne yapabiliriz?

En kolay şekilde Mathf struct'u yerine C# standart kütüphanesinde bulunan Math.Round fonksiyonunu kullanabiliriz.
Bu fonksiyona şöyle erişebilirsiniz:
System.Math.Round() 
Örnek Kullanım:
System.Math.Round(3.14159265 , 3);     Sonuç: 3.141
(Siz burada direkt sayı yerine, sayı atanmış değişken kullanırsınız. Kısa olsun diye böyle gösterdim)

Bir diğer yöntem
YuvarlamakIstediginizDegısken.ToString("F2");     2 ondalık basamak kalacak şekilde yuvarlar ve sayınızı string'e dönüştürür. Tekrar float'a dönüştürmek isterseniz başka bir değişkene float olacak şekilde atayabilirsiniz şu şekilde:
FloatAtanacakDeg = float.Parse(YuvarlamakIstediginizDegısken);

En doğru yöntem birinci yöntemdir ama ikinci yöntemi zaten string olarak almak istediğiniz bir değişkende kullanımı pratik olur.

7 Ağustos 2018 Salı

Unity Time.deltaTime nedir?

Unityde Time.deltaTime bilgisayarınızın bir önceki frame'i tamamlaması için gereken süreyi veren salt okunur bir değişkendir.

Ne İşe Yarar?


Unityde normalde çalıştırdığınız fonksiyonlar bilgisayarın çalışma hızına endekslidir.deltaTime ile performanstan bağımsız olarak fonksiyon çalıştırabilirsiniz. Örneğin bir nesneyi ileriye hareket ettirecekseniz deltaTime kullanmadan hareket ettireceğiniz bu cisim yavaşlayıp hızlanacaktır çünkü ileri gitme komutu bilgisayarınız hızlı çalıştıkça hızlıca, yavaş çalıştıkça yavaşça verilecektir.
deltaTime ile sadece zamanı baz alarak çalıştıracağınız komutu aynı aralıklarla çalıştırırsınız.

Mavi top Time.deltaTime ile sabitlenen

Peki Nasıl Çalışır?

Time.deltaTime aslında bilgisayarınızın aldığı frame sayısını gösterir.(çalışma hızını) Ancak bunu bizim bildiğimiz FPS(Saniyelik frame sayısı) türünden vermiyor.Son 2 frame arasındaki zamanı veriyor.
Bilgisayarınızın 10 FPS aldığını düşünelim. time.deltaTime'ı okuyunca 1/10 = 0.1 döndürecektir.
Time.deltaTime'ı tekrar okuyunca çalışma hızı 5 FPS'e düşerse(diğer frame geç gelirse)  time.deltaTime 0.2 döndürecektir.

Bizim de bir küp nesnesini hareket ettirmek istediğimizi varsayalım. Küp nesnesine şu komutu verelim = transform.translate(10*Time.deltaTime,0,0)  (10 metre ileri git)
Küp birinci okumada 10*0.1 = 1 metre ileri gidecektir.
Küp ikinci okumada 10*0.2 = 2 metre ileri gidecektir.
Bu sayede eşit hızla ileri gitmiş olacak.

Neden eşit hızla ileri gittiklerini anlayamadıysanız şöyle açıklayayım: delta.Time'ı ilk okumamızda bilgisayarımız hızlı çalıştı ve 0.1 döndürdü ancak ikinci okumamızda yavaşladı ve 0.2 döndürdü,
bizde bilgisayarımızın çalışma hızı yarıya düştüğü için ileri gitme komutunu 2 kat yüksek değerle verdik.bunu Time.deltaTime ile yaptık.


Özetle Time.deltaTime komutlarımızı bilgisayarımız hızlı çalıştıkça daha düşük değerle vermemizi, bilgisayarımız yavaş çalıştıkça daha yüksek değerle vermemizi sağlayarak ortalama olarak aynı değerde çalışmasını sağlar.
Buna örnek olarak: Bir yarış oyununda hızlı bilgisayarla yavaş bilgisayarın yarıştığını düşünelim. Time.deltaTime olmasaydı İkisinin de eşit hızla gitmesi gerekirken her framede ileri gitme komutu verilmesinden dolayı daha fazla frame alan hızlı bilgisayar yarışı kazanır.