Hepinize merhabalar,

Bu dersimizde birlikte Unity 3D‘nin NavMesh sistemini kullanarak basit bir oyun yapmaya çalışacağız. NavMesh, yani Navigation sistemi Unity’nin bize pathfinding (yani bir objenin bir noktadan başka bir noktaya, yol üzerindeki engelleri göz önüne alarak bir rota çizmesi) için sunduğu bir araç.

Yapacağımız basit oyunda amacımız toplam 60 saniye boyunca topu ayağımızda tutabilmek. Tabi rakibimiz (AI) bizden önce davranırsa oyunu kaybediyoruz. Her ne kadar NavMesh sisteminden bahsedecek olsak da dersin büyük çoğunluğunda oyun mekaniklerini oluşturmakla uğraşacağız. NavMesh’e özellikle dersin başlarında yoğunlaşacak, sonra yeri gelince öğrendiğimiz bilgileri pratiğe vuracağız. Scriptlerimizi ise C# dilinde yazacağız. Eğer Unity konusunda hiç bilginiz yoksa bu derse başlamadan önce başlangıç dersleri okumak/izlemek isteyebilirsiniz. Özellikle kod yazma konusunda biraz da olsa tecrübeniz olması çok iyi olur.

Bu derste ilk defa animasyonlu gif resimler kullandım. Bu resimleri normal resimlerden ayırt etmek için köşelerine “gif” yazısı yerleştirdim. Ayrıca şunu da şimdiden belirteyim: bu ders uzun, çok uzun. Word’de yaklaşık 70 sayfa tuttu (bir kısmı resimler ve kodlardan oluşuyor ama yine de oldukça uzun bir yazı bekleyin). Derste oyunu her şeyiyle sıfırdan oluşturuyoruz. Buyurun size oyundan bir resim:

0

Oyunu Web Player üzerinden test etmek için tıklayın: http://yasirkula.freeiz.com/Projects/MiniFootball.html

Oyunu WebGL üzerinden test etmek için tıklayın: http://yasirkula.freeiz.com/Projects/MiniFootballWebGL/index.html

Örnek projeyi indirmek için tıklayın (Unity 5.3.1 öncesi sürümlerde sıkıntı çıkabilir): https://www.dropbox.com/s/g6y8dm0g99i1c9q/NavMesh%20Ders.zip?dl=0

Dersi PDF olarak indirmek isterseniz tıklayın (dikkat: gif resimler desteklenmez ve derste hatalı bir kısım olursa ben o hatayı site üzerinden güncellerken büyük ihtimalle pdf üzerinden güncellemem [hatalı kısım olduğunu sanmıyorum gerçi]): https://www.dropbox.com/s/9q7d5f4m9je1hin/Unity%20NavMesh%20Futbol%20Oyunu%20Ders.pdf?dl=0

O halde son gaz derse başlayalım…

Yazının devamını oku »

Hepinize merhabalar,

Bu derste Unity 3D için basit editör scriptleri yazmayı göreceğiz. Unity’i editör scriptleri ile daha da işlevselleştirmek bazen karmaşık projelerinizde işinizi oldukça rahatlatabilir.

Editör scripti yazmak için Unity’nin gerçekten çok fazla fonksiyonu mevcut ve bunların hepsini ele almak benim için mümkün değil. Ben sıklıkla kullanılan fonksiyonlardan ve attribute‘lardan bahsetmeye çalışacağım. Bu derste OnInspectorGUI fonksiyonu ile ContextMenu ve MenuItem attribute’larını göreceğiz. Dersi C# ile anlatacağım ve bir miktar kod yazma bilginiz olduğunu varsayacağım.

Hazırsanız başlayalım…

Yazının devamını oku »

Yine ve yeniden merhabalar,

Bu mini derste Unity 3D‘de Mathf.Lerp fonksiyonunu kullanarak istediğimiz bir işlemi “yumuşatmayı” göreceğiz. Yumuşatmadan kastım bir değerden başka bir değere geçişi küt diye değil de adım adım yapmak.

Örneğin kameraya oyuncuyu yumuşak bir şekilde takip etmesini söylerseniz, oyuncu ileri giderken kamera biraz geride kalır, oyuncu geri giderken kamera oyuncuya biraz daha yaklaşır. Böylece “yumuşak” bir animasyon ortaya çıkar. Veya bir objenin sürekli fare imlecine doğru hareket etmesini istiyorsunuz diyelim, bu iş için de Lerp’ten faydalanabilirsiniz. Lerp için daha pek çok örnek üretilebilir; bu daha çok sizin hayal gücünüze kalmış bir şey.

Hazırsanız başlayalım…

Yazının devamını oku »

Hepinize merhabalar,

Bu yazımda, Unity‘de gyroscope (gyro) kullanımını göstermek için hazırladığım bir örneği sizinle paylaşacağım. Gyroscope dediğimiz şey telefonun 3D uzayda hangi rotation’a sahip olduğunu algılamamıza yarıyor. Gyroscope’un döndürdüğü veriden faydalanarak da kameraya eğim verebiliyoruz. Bu sayede oyuncu elindeki cihazı nereye çevirirse oyun içi kamera da o yöne dönüyor. Yani güzel bir fikir ile entegre edildiğinde gyroscope, oyununuzun piyasadaki diğer oyunlar arasından sıyrılmasına yardımcı olabilir.

Benim hazırladığım örnekte elimizde bir bombaatar silah (grenade launcher) bulunmakta ve biz gyroscope ile nereye bakarsak silah oraya ateş etmekte. Oyunda herhangi bir amacımız yok; buradaki asıl olay gyroscope’u iş üstünde görmek. İşte size örnekten bir resim:

GyroOrnek

Örneği indirmek için: https://www.dropbox.com/s/475zv4argw0ndgd/Gyro%20Ornek.zip?dl=0

Faydalandığım kaynak: http://blog.heyworks.com/how-to-write-gyroscope-controller-with-unity3d/

Detaylı açıklama için yazının devamını okuyabilirsiniz…

Yazının devamını oku »

Yine ve yeniden merhabalar,

Bu derste Eclipse ADT kullanarak Unity Android için Java dilinde basit bir plugin yazacağız. Pluginimiz sayesinde ekranda Toast mesajları gösterebileceğiz (Toast dediğimiz şey ekranın altında belirip kısa sürede yok olan bildirim mesajları oluyor):

resim1

Eğer programlama konusunda çok yeniyseniz bu ders sizin için olmayabilir. Ama yok ben Android’in tüm nimetlerinden faydalanmak için kendimi tamamen hazır hissediyorum diyorsanız o halde belki bu yazı ile başlangıç yapabilirsiniz.

NOT: Derste yaptığım herşeyi bir unitypackage‘da depoladım. İhtiyaç duyarsanız indirme linki: https://www.dropbox.com/s/are1b4fgra7q1gr/AndroidPluginOrnegi.unitypackage?dl=0

Hazırsanız derse başlayalım!

Yazının devamını oku »

GÜNCELLEME (22.06.2016): Android oyunlarınızı direkt oyun içerisinden test etmenizi sağlayan bir eklenti yazdım; artık bu yazıda paylaşılan yöntemler yerine onu kullanmanızı tavsiye ederim: https://yasirkula.com/2016/06/18/unity-oyun-ici-debug-konsolu-ui-sistemi-ile/

Hepinize merhabalar,

Unity‘de oyun tasarlarken bol bol Debug.Log kullanır, nerede ne olduğunu veya bir hatanın neyden kaynaklandığını bu şekilde anlamaya çalışırım. Oyunu Android cihazda test ederken de bu log’lara erişebilmek ve(ya) Unity’nin verdiği exception’ları görebilmek oldukça büyük önem arz edebiliyor. Bunun içinse kullanabileceğimiz iki araç var: adb logcat veya Eclipse ADT.

Yazının devamını oku »

Hepinize yeniden merhabalar,

Bu dersimizde Unity için basit bir loading ekranı yapacağız. Bu loading ekranı ile scene’ler arası yumuşak bir şekilde geçiş (transition) yapabilecek ve sonraki sahnenin % kaçının yüklendiğini oyuncuya gösterebileceğiz.

O halde son gaz derse başlayalım…

Yazının devamını oku »