2

Kod Yazmadan Unity 2D Oyun Fiziklerini Kullanmak

unity-2d-oyun-fizigi-ornek-uygulama

Unity ile ilgili ilk yazımızda Microsoft Açık Akademi tarafından verilen ücretsiz eğitime değinmiştik. Başlangıç seviyesinde çok faydalı olacağını düşündüğüm diğer eğitimlere bu yazıda ve gelecek yazılarda yer vermeye çalışacağım. Bu yazının konusu Unity’de J.A. Whye tarafından verilen Make a Unity 2D Physics Game – For Beginners! isimli eğitim serisi olacak.

Başlangıç seviyesindeyseniz ve mobil platformları hedefliyorsanız Unity’nin 2D gücünden faydalanarak platform oyunları geliştirebilirsiniz. Üstelik Unity’nin sağladığı hazır özellikler sayesinde tekerleği yeniden keşfetmeye uğraşmak yerine gerçek fizik etkilerini oyunlarınıza yansıtabilirsiniz. Bu eğitimde “Bir topa bouncing (zıplama) hareketi nasıl kazandırılır?”, “Buz görsellerinin nasıl daha kaygan bir zemine sahip olmasını sağlarız?” gibi sorulara cevap bulacağız.

Ücretsiz Unity eğitimini izlemeden bu yazıyı takip edebilirsiniz. Adım adım önemli noktaları aşağıda aktarıyorum.

1- Yeni Proje Oluşturma

Unity’de yeni bir 2D projesi oluşturun. Ben bu projede ismi “BouncingAndSliding ” olarak belirledim.

2- Assetleri İndirme

Unity üzerinden Asset Store açalım ve bu projede kullanılacak assetleri indirelim.

Asset Store’da 2D Pack yazarak aratın. Gelen sonuçlardan aşağıdakini indirin. (15.5 MB civarında)

Import aşamasında sadece Sprites altındakileri import etmeniz yeterli.

unity-2d-pack

3- Klasörleri Oluşturma

Projeyi ilk create ettiğinizde Assets isimli klasör otomatik olarak gelmektedir. Bundan sonra bu klasör altında kendi klasörlerinizi oluşturabilirsiniz. Bu tüm dosyalarınızı kolayca organize etmenizi sağlayacağından kazanmanız gereken iyi bir alışkanlık diyebilirim. Şimdi Assets’e sağ tıklayıp Create Folder ile yeni bir klasör oluşturalım ve adını Prefabs olarak güncelleyelim. Bu şekilde 2 (iki) klasör daha oluşturup isimlerini Prefabs ve Scenes verin. Şimdi aşağıdaki şekilde 4 (dört) adet klasörümüz oldu: Materials, Prefabs, Scenes, Sprites.

unity-yeni-klasor-olustur

 

4- Unity’de Bir Nesneye Gravity (Yerçekimi Uygulama)

Unity’de bir nesneye yerçekimi etkisi eklemediğimiz sürece o obje aynı pozisyonda asılı kalmaya devam edecektir. Bu örneğimizde Top (Ball) görseline bir yerçekimi uygulamak istiyoruz. Bu durumda tek yapmamız gereken görseli Scene’e (sahneye) ekledikten sonra Inspector panelinde yer alan Add Component ile bir Rigidbody 2D eklememiz (2 boyutta çalışırken Rigidbody değil Rigidbody 2D eklediğinizden emin olun, aksi durumda bu fizik hareketi uygulanamayacaktır). Artık sahneyi Play butonu ile başlatınca topun aşağıya düştüğünü göreceksiniz.

 

5- Çarpışma Efektleri için Collider Ekleme ve Prefab Oluşturma

Unity’de ilerledikçe fizik hareketlerinde iki objenin çarpışmasına bağlı eylemlerin sıklıkla kullanıldığını göreceksiniz. Örnek olarak biraz önce sahneye ekleyip gravity uyguladığımız top aşağı düşerken varsa önce hareket yönündeki objelere, son olarak da ulaşabilirse zemine çarpacaktır. Çarpacaktır diyoruz ancak bunu Unity’ye bizim öğretmemiz gerekiyor. Bunu da eklediğimiz objelere Collider ya da Trigger uygulayarak yapıyoruz. Peki Collider ve Trigger nedir ve bunların farkları nelerdir?

Unity 2D ile çalışırken çarpışmalar için şu kuralı mutlaka hatırlamalıyız: “İki nesnenin collide etmesi (yani çarpışabilmesi) için bu iki objede de Collider2D component eklenmiş olmalı ve bu objelerin en az birine  Rigidbody 2D component eklenmiş olmalı.”

unity-collide

Şimdi topun sahneye eklenecek olan tahtalara çarpmasını ve son olarak zemine çarpmasını istediğinizi düşünelim. Buna göre tahta objelerine ve zemine Collider2D eklememiz gerekecek. Topa zaten Collider ve Rigidbody2D eklemiştik, bu nedenle tahtalara ve zemine Rigidbody 2D uygulamaya gerek yok.

Trigger da aslında Collider gibi çarpışmalar için kullanılır ancak Collider olan bir nesnenin içinden geçemezken Trigger olanın içinden geçebiliriz. Örnek olarak top tahtaya çarptığında yön değiştirebilsin diye tahtaya Collider veririz; ancak top bir altına çarpsın ve puan toplayalım istiyorsak puana çarptığımızda çarpmanın etkisiyle savrulmadan yönümüze devam edebilmek ve puan görselimizi kullanıcıya hissettirmeden Destroy etmek (ekrandan silmek) için Collider 2D eklenmiş puan objesinin Is Trigger kutucuğunu işaretleyerek aktif hale getiririz.

Zemin Görseli Ekleme ve Bu Zemine Edge Collider Ekleme

Sahneye önce Sprites klasörü altındaki GrassThinSprite ile bir zemin ekleyin. Ardından bu objeye Add Component >> Edge Collider 2D uygulayın. Collider’ın tipini Box olarak vermeye gerek yok, çünkü top sadece zeminin üst bölümüyle temas edecek.

Tahta Görseli Ekleme ve Bu Görsele Box Collider Ekleme

Ardından yine Sprites klasörü altında bulunan PlankSprite resmini sahneye atın ve bu objeye Add Component >> Box Collider 2D uygulayın. Bu sefer box veriyoruz, çünkü top hareket edip zıplarken tahtanın alt kısmına da çarpabilir. Bu tahtaları ekranda birden fazla kez kullanacağımız için hepsine tek tek Box Collider ile uğraşmak yorucu olacaktır. Bu adımda da imdadımıza Prefabs yetişiyor.

Prefabs ile Bir Kez Hazırlanan Objeyi Tekrar Tekrar Kullanma

Prefabs klasörüne sağ tıklayıp Create >> Prefab seçeneği ile bir Prefab oluşturun, adını Plank olarak belirleyin ve sahnenizdeki tahta sprite’ı sürükleyip bu Prefab’ın üzerine bırakın. Artık sahneye tahta eklemek istediğinizde bu Prefab’tan alıp eklerseniz otomatik olarak Box Collider 2D component eklenmiş olarak gelecektir.

5- Physics2D Material

Topa Zıplama Etkisi Kazandırma

Topu sahneye ekledik, Rigidbody 2D ile bir gravity uyguladık. Tahtalar ve zemin ekledik, bunlara çarpışmalar için Collider ekledik. Bundan sonra topun bir tahtaya ya da zemine çarptığında çarpmanın şiddetini göre zıplamasını istiyoruz diyelim. Bunu yapabilmek için bir Physics2D Material eklememiz gerekiyor.

Materials klasörü üzerinde sağ tıklayarak Create >> Physics2D Material ile bir material ekleyin ve adını Bouncy ya da istediğiniz başka bir isimle güncelleyin. Bu material default olarak “Friction (Sürtünme)” ve “Bounciness (Zıplama)” adında iki özellikle gelir. Bizim istediğimiz zıplama hareketi olduğundan Bounciness değerini 0.4 gibi bir değere çekin.

Şimdi bu material objesini sahnedeki topun üzerine sürükleyerek Top ile bu material’ı ilişkilendiriyoruz. Artık top collider’a sahip bir objeye çarptığında zıplama etkisi de gösterecektir.

Buz Görselinin Sürtünme Değeri ile Oynayarak Daha Kaygan Zemine Sahip Olmasını Sağlamak

Ekrana Sprites klasörü altındaki IceSprite görseli ile bir buz resmi uygulayın. Şimdi buraya kadar öğrendiklerimizi dikkate alarak çarpışmaların sağlanabilmesi için bu görsele bir Collider eklememiz gerekiyor. Hemen şekline uygun olarak Box Collider 2D ekliyoruz (Polygon Collider da ekleyebiliriz ancak bu karmaşık collider performansa olumsuz etki edebileceğinden mümkün olduğunca Box, Circle gibi temel collider tiplerini kullanınız.) Ardından Materials klasöründe yeni bir Material oluşturun ve adını Slick (kaygan anlamında) güncelleyelim. Friction değerini 0.1 gibi bir değere çekelim ki sürtünme katsayısı azalsın ve objeler bunun üzerinde kayabilsin. Bu material’ı şimdi ekrandaki buz görseli ile ilişkilendirin ve buz görselini bir Prefab olarak kaydedin. Böylece buz etkisindeki görseli Prefab’dan alarak istediğiniz sayıda ve aynı kayganlık seviyesinde kullanabilirsiniz.

Artık topu ve diğer nesneleri farklı konumlara koyarak hiç kod yazmadan temel fizik kurallarını yapabildiğinizi göreceksiniz. Görseller muhtemelen Angry Birds’tekileri ve Flappy Bird’ü hatırlatacaktır size 🙂

NOT: Aslında bu kurs içeriği Unity sayfasında aşağıdaki linkte 5 dakikalık bir videoda anlatılmış; ancak beginner seviyedeki kullanıcılar için yeterli derinlikte anlatılmadığından Udemy’deki eğitmen bu kursu 1 saatlik videoda açıklamış. Baştan sona izlemenizi tavsiye ederim. Yine de Unity’nin kısa eğitim videosuna bakarak neler yapabileceğimize isterseniz hızlıca göz atabilirsiniz.

http://unity3d.com/learn/tutorials/modules/beginner/2d/sliding-bouncing-2d

 

Yaklaşık 1 saat süren bu ücretsiz eğitimi ise aşağıdaki linkten izleyebilirsiniz.

https://www.udemy.com/unity-2d-bouncing-and-sliding-with-physics/learn

Bol oyunlu günler 🙂

Volkan Sel

Merhaba, Bilişim sektöründe Analist olarak çalışıyorum, aynı zamanda blog yazarıyım. Mobil Uygulamalar, Oyun Tarihi ve Oyun Türleri, Mobil Cihazlar, Dijital Pazarlama, Usability gibi konular ile ilgilenmekteyim.

2 Comments

Bir Cevap Yazın