Unity3D oyununda güneşi otomatik hareket ettirmek

Bu makalede Unity3D oyun sahnesinde yer alan güneşi nasıl otomatik hareket ettireceğimizi inceleyeceğiz.

Unity3D oyununda sahnenin aydınlanmasını sağlayan ışık kaynağı yani güneş aslında sahnede yeralan Directional Light nesnesidir.

Bu makalede Directional Light nesnesini gündüz ve geceyi oluşturacak şekilde nasıl hareket ettireceğimizi göreceğiz.

Hemen Unity3D açalım ve yeni bir proje oluşturalım (ben projeye GunesDogudanDogarBatidanBatar ismini verdim)

Unity3D oyun projesi oluşturma

Eğer Directional Light nesnesini Hierarchy panelinden seçip, Rotation değerleri ile oynayarak döndürecek olursak, sahnemizin gündüz / gece geçişleri gibi aydınlanıp / karardığını görebiliriz.

Unity3D oyun projesinde Directional Light ile güneş yapma

Yapmamız gereken, bir C# Script oluşturup, Directional Light nesnesine atamak ve bu dönüşü programatik olarak yaptırmak;

Hemen Hierarchy panelinde Directional Light seçili iken Inspector panelinde Add ComponentNew ScriptSunController.cs yazıp Enter tuşuna basalım.

Yeni oluşturduğumuz SunController.cs dosyasını açalım ve içine aşağıdaki kodları yazalım;

Böylece oyun başladığı andan itibaren güneş (Directional Light) otomatik olarak dönmeye ve gece / gündüz etkisi oluşturmaya başlayacak.

Gece ve gündüz geçişinin hızı ile oynamak isterseniz koddaki 0.01f değeri ile oynamanız gerekiyor

Not: Bu makaleyi yazarken internette yaptığım araştırmalardan ve bulduğum kod örneklerinden, yöntemlerden de faydalandım :)

Fluent Interface ve Class nasıl geliştirilir?

Geçen günlerde LINQ: .NET Language-Integrated Query tarzı kütüphaneler nasıl yazılıyor diye düşünürken ve internette gezinirken VinKamat kullanıcısının 02 Temmuz 2009 tarihinde attığı aşağıdaki tweet’e denk geldim;

LINQ tarzı kodlara örnek olarak aşağıdaki koda bakabiliriz;

Yukarıdaki örnekte de görebileceğimiz gibi, OrderList değişkenindeki listeyi Where() methodu ile filtreliyoruz, OrderBy() methodu ile sıralıyoruz, Take() methodu ile sadece istediğimiz kadar kaydı alıp, Select() methodu ile geriye yeni bir dizi döndürüyoruz.

Biz de benzer şekilde çalışacak bir kod geliştirelim, bu örnekte yemek oluşturacak kodları yazacağız. Öncelikle aşağıdaki interface‘i projemize ekleyelim;

Bu interface‘de önemli nokta, tüm method‘ların kendi interface‘inin tipinde sonuç döndürmesi.

Böylece projeye aşağıdaki gibi bir class ekleyebiliriz;

Bu class‘ta önemli nokta, tüm method’ların this anahtar kelimesi ile kendi sınıfını geri döndürmesi. Böylece bu methodları bir zincir (chain) oluşturacak şekilde aşağıdaki gibi kullanabiliriz;

Mülteci Hackathon Etkinliği Şubat 2017

Yoğun kar yağışı nedeniyle 1 hafta gecikmeli yapılan Mülteci Hackathonu 03 Şubat 2017 - 04 Şubat 2017 tarihlerinde FMV Işık Üniversitesi Şile Kampüsünde gerçekleştirildi.

Microsoft‘un IoT, Mobil (Xamarin) ve Bulut (Azure) çözümlerini anlatmak üzere ben de etkinlikte konuşmalar yaptım.

Mültecilerin yaşadığı sorunlara çözüm bulmak gibi ulvi bir amaçla gerçekleşen etkinliğe beni davet eden sevgili İrem Sefa Yayımlar‘a ve etkinliğe katılan tüm arkadaşlara çok teşekkür ederim.

Angular ile Password Strength Meter yapımı

Bu makalede ‘Bir Angular projesinin üyelik formunda şifrenin yeteri kadar güçlü girildiğinden nasıl emin olabilirim?’ sorusunu cevaplayacağız.

Önce bir Angular projesi oluşturacağız, Bootstrap 4 ile stillendireceğimiz üyelik formu yapacağız ve şifre giriş alanının altına, girilen şifrenin güçlülük derecesine göre kırmızıdan-yeşile doğru hareket eden bir bar ekleyeceğiz.

Hemen projeyi oluşturmak istediğimiz dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidelim ve aşağıdaki komutu çalıştıralım;

Angular CLI, projeyi oluşturduktan sonra npm aracılığıya gerekli tüm dependency‘leri download edecek.

Projeyi oluşturduğumuz dizinde aşağıdaki komutu çalıştıralım, böylece Angular CLI projeyi http://localhost:4200 adresi üzerinden yayınlamaya başlayacak;

Projenin src dizininde yer alan index.html dosyasının head taglarının arasına aşağıdaki satırı ekleyelim ve projede Bootstrap 4 css framework‘ünü kullanmaya başlayalım;

Projenin src/app/app.component.html dosyasını açalım ve aşağıdaki kodlar ile değiştirelim;

Yukarıdaki kodlarda bootstrap‘in stillerini kullanarak bir üyelik formu oluşturduk. Şifre giriş alanının altında .strength-meter css class‘ına sahip olan div, şifrenin ne kadar güçlü olduğunu göstereceğimiz alan olacak.

Formun input elementlerine yazdığımız [(ngModel)] attribute'lerine dikkat! Bu attribute'lerin değeri, sayfanın Typescript kodlarında oluşturacağımız değişkenlerin isimleri ile aynı olmalı. Son olarak, button elementine yazdığımız (click) attribute'ü, button'a tıklandığında çalıştırılacak Typescript method'unun ismini içermeli!

Projenin src/app/app.component.css dosyasını açalım ve aşağıdaki kodlar ile değiştirelim;

Böylece ekranda ihtiyaç duyduğumuz tüm css‘leri de yazmış olduk.

Eğer sayfaya bu haline bakacak olursak, aşağıdaki gibi bir sonuç görmemiz lazım;

Şimdi gelelim src/app/app.component.ts dosyasına ve aşağıdaki kodları yazalım;

Öncelikle form elemanlarının değerlerini alabilmek için fullName, email ve password değişkenlerini string olarak tanımlıyoruz.

Ayrıca Kaydol butonuna tıklandığında yapılacak işleri yazacağımız signup() methodunu da tanımlıyoruz.

Şifre alanında keyup event‘i tetiklendikçe (yani şifre belirlenirken) çağırılan updateMeter() methodunda şifrenin karmaşıklık seviyesini hesaplayacağımız kodları yazıyoruz.

Şifrenin karmaşıklık seviyesini belirlemek için internetten yardım aldım, stackoverflow'daki çeşitli örnek kodları inceledim ve birkaç tanesini birleştirerek bu makaledeki kodu yazdım. Sizler kendiniz de bir kod geliştirebilir veya benim yaptığım gibi hazır yazılmışlardan faydalanabilirsiniz ;)

Eğer sayfayı yenileyecek ve sonuca bakacak olursak, aşağıdaki ekranı görmemiz lazım;

Bu makalenin kodlarına Github üzerinde polatengin hesabımda yer alan Password-Strength-Meter aracılığıyla erişebilirsiniz.

Microsoft ve Koç Topluluğu Hackathon'u Ocak 2017

Microsoft ve Koç Topluluğu birlikte 24 Ocak 2017 ve 25 Ocak 2017 tarihlerinde Microsoft ve Koç Topluluğu Hackathon‘u isminde bir etkinlik düzenlediler.

Ben de Azure, UWP, Xamarin, .Net Core, Chatbot konularında katılımcılara teknik yardımlarda bulunmak için etkinlikte görev aldım.

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı