Unity ile Animasyon Yapımı

Unity ile Animasyon Yapımı

7 Ocak 2020 0 Yazar: Ahmet Güler

Evet başlıktanda anlayacağınız üzere, bugünkü konumuz Unity‘de nesnelerimize animasyon yapmak olacak.Böylelikle yaptığımız projeler daha iyi bir hal alacak ve daha güzel görünecektir.Başlamadan değinmek istediğim son nokta ise, bu yazımızda yapacağımız animasyonlar kod ile oluşacaktır.Yani Unity’deki Animation penceresini kullanmayacağız.Hazırsanız yeni bir proje oluşturalım ve sahnemizi hazırlayalım.

Sahne planlaması.

Animasyon için bir fırıldak oluşturmayı düşünüyorum ve bunu yazacağımız kod vasıtasıyla döndürmeye çalışacağız.Öncelikle Hierarchy penceresinde sağ tıklayarak sırasıyla, 3D Object > Cube seçimini yapalım.Bu nesneyi Scene penceresinde gerekli araçları kullanarak (klavyeden R tuşu) fırıldağımızın kanadını oluşturacak biçimde şekillendiriyoruz.

Daha sonra, şeklini ayarladığımız bu nesnemizden üç kopya daha alıyoruz.Bunu isteseniz klavyemizin crtl+d kombinasyonu ile istersenizde, Hierarchy penceresinde nesnemize sağ tıklayarak Duplicate seçeneğiyle yapabilirsiniz.Kopyaladığım bu üç nesne doğal olarak aynı pozisyonlarda gözükeceği için, baktığımızda tek bir nesne göreceğizdir.

Fırıldağımızı oluşturmaya başlayalım.

Şimdi bu nesneleride, fırıldağımızın kanatlarını tamamlayacak şekilde yerleştirelim.Bunu yapmak için nesnemizi seçiyoruz.Örneğin ben, ikinci kopya olan nesnemizle başlıyorum.Sağ tarafta bulunan Inspector penceresinden Transform bileşeninin altında yer alan Rotation bölümünü buluyoruz ve z koordinatını “90” dereceye ayarlıyoruz.Daha sonra üçüncü kopyamı seçiyorum ve yine aynı bölüme gelerek, bu sefer z koordinatını “45” dereceye ayarlıyoruz.Sonra dördüncü kopyamı seçiyorum ve tekrar Inspector penceresinde z koordinatını, bu sefer “-45” dereceye ayarlıyoruz.

Artık fırıldağımızın taslağı ortaya çıktı.Tabi bu kanatların her birine renk vermemiz gerekiyor.Böylelikle animasyonumuz oynarken, daha güzel bir görüntü ortaya çıkacaktır.Daha önceki derslerimizde nasıl material oluşturacağımızı ve kullanımını öğrenmiştik.Bilmeyenler için, Project penceresinde sağ tıklayarak sırasıyla, Create > Material seçimini yapıyoruz.Dört adet kanadımız olduğu için, bize dört adet material dosyası lazım.Her bir material dosyasına farklı bir renk verdikten sonra, sürükle/bırak yaparak kanatlarımızı oluşturan nesnelerin üstüne bırakıyoruz.Son olarak dört kanadı tek bir nesnenin altında toplamamız gerekiyor ki, animasyonumuz tek parça halinde gözüksün.Birazdan ne demek istediğimi anlayacaksınız.

Bir nesnenin alt nesnesini oluşturmak.

Bunu sağlamak için, Hierarchy penceresine geliyoruz ve sağ tıklayarak, “Create Empty” seçimini yapıyoruz.Bu bize boş bir nesne veriyor.İçinde sadece Transform bileşenini barındırıyor.Biz bunun ismini değiştiriyoruz ve diğer dört nesneyi seçerek (ctrl tuşuna basılı tutarak fare ile tek tek üstlerine tıklayabilir yada shift tuşuna basılı tutarak seçim aralığınızın başındaki ve sonundaki nesneleri seçebilirsiniz.) seçtikten sonra basılı tutarak sürüklüyoruz ve az önce oluşturduğumuz boş nesnenin üzerine bırakıyoruz.Böylelikle aşağıdaki gibi bir sahnemiz oluyor.

Şimdi yeni bir C# script dosyası oluşturalım ve kod yazmaya geçelim.Project penceresinde sağ tıklayarak sırasıyla, Create > C# Script seçimini yapıyoruz.Bu dosyamıza bir isim verdikten sonra açıyoruz.Öncelik kullanacağımız değişkenleri tanımlamamız gerekiyor.Bu projede sadece eksenlere ihtiyacım olduğu için,

public float x, y, z;

Float türünde eksenlerimi ifade eden üç değişkenimi oluşturuyorum.Bunları alt alta üç satırda da yazabilirdik.Bu şekilde kullanımı hem satırdan kazandırıyor, hemde daha temiz bir görüntü oluşturuyor.Şimdi start() fonksiyonumun içine gelip, oluşturduğumuz bu değişkenlerimize değerlerini atayalım.

x = 0;
y = 0;
z = 0;

Gördüğünüz gibi, başlangıç değerlerini “0” olarak ayarlıyorum.Çünkü projemi başlattığım zaman, Inspector penceresinde kendim açılarını vermek istiyorum.Gelelim sürekli dönmesi için gereken kodumuzu yazmaya.Bunu haliyle update() fonksiyonum içine yazacağım.Böylelikle bir döngü şeklide sonsuz (bir koşul belirlemedikçe) bir şekilde animasyonumuzu oluşturacak.

transform.Rotate(x, y, z, Space.Self);

Parametrelerin önemi.

Buradaki kodumuzu açıklarsak, nesneleri çeşitli açılarda döndürmek için transform.Rotate fonksiyonu kullanılır.Bu dört adet parametre alır.Parametreyi önceki yazılarımda açıklamıştım.Yani burada x, y ve z eksenlerim ile birde Space.Self kodunu görüyorsunuz.Bu kod, nesnemizin kendi yani yerel ekseninde dönmesini sağlıyor.Eğer çevreye yani, global eksene göre dönüşünü ayarlamak isteseydik bu sefer Space.World konunu kullanmamız gerekiyordu.

Evet kodlarımız bu kadardı.Şimdi kaydedelim ve script dosyamızı ana nesnemizin (4 adet kanadı alt öğesi yaptığımız nesne) üzerine sürükle/bırak yöntemiyle ekleyelim.Şimdi projemizi test etmek için başlattığımızda, Inspector penceresindeki x, y ve z ekseklerini ayarlayarak dönüşünü ayarlayabiliriz.Evet yazımızın sonuna geldik.Bir başka konuda görüşmek üzere…