Unity 2D derslerinin 6. ile devam ediyoruz..
Bu dersimizde öğreneceklerimiz:
1: Karakter beklerken animasyon eklemeyi,
2: Karakter hareket etmeye başlayınca animasyonumuzun çalışması,
3: Karakter sola hareket ettiği zaman karakterin dönmesini,
4: Karakterimizin zıplamasını öğreneceğiz..
Karakterimize yeni bir animasyon ekleyerek başlayalım
Aşağıda ki sıralama Ders2‘ de anlatıldığı için hızlı geçilecektir..
Sırasıyla:
1: Assets>Trace>Sprites>RobotBoyIdleSprite gidiyoruz..
2: Inspector penceresinden Sprite Mode>Multiple>Apply>Sprite Editor açıyoruz..
3: Slice>Automatic>Slice butonuna basıp Apply diyoruz ve Sprite Editorumuzu kapatıyoruz
4: Ana resim Scene kısmına sürüklenerek yeni animasyon oluşturuyoruz ve Scene kısmında oluşan karakteri siliyoruz..
Zemin belli olsun diye ben Sahneye bir resim atıp Box Collider ekledim Bknz: Ders3
Scene ve Project kısmımız şöyle gözüküyor Bknz: Resim1
Daha sonra karakterimizi seçerek Animator sekmesine tıklıyoruz..
Project kısmında bulunan yeni oluşturduğumu Bekleme Animasyonu(IdleAnimation) dosyasını Animator içine sürükleyip bırakıyoruz..
Animator penceremizin son hali için Bknz: Resim2
Şimdi yapacağımız şey karakterimizin oyun başlarken bekleme animasyonunun çalışması,
Daha sonra biz hareket ettirdiğimiz zaman hareket animasyonunun çalışması..
1: Bunun için öncelikle IdleAnimation yazan butonumuza sağ tıklıyoruz ve “Set as Layer Default State” seçiyoruz..
2: Daha sonra IdleAnimation yazan butonumuza sağ tıklıyoruz ve “Make Transition” seçiyoruz..
3: Çıkan ok işareti ile birlikte WalkAnimation butonumuza tıklıyoruz..
4: Ve aynı işlemi WalkAnimation için yapıyoruz WalkAnimation>Make Transition>IdleAnimation Bknz: Resim3
Animator kısmı ile işimiz bitti, şimdi gelelim Script kısmına..
GameObject’imizin Animator kısmına müdahale edebilmemiz için GetComponent kodu ile Animator’u çağırıyoruz.. Bknz: Ders 5
İlk önce bir değişken oluşturalım:
private Animator anim;
private = bu değişken sadece bu Script de çalışır demek
Animator = Component adı
anim = Değişkenimize verdiğimiz isim
Şimdi ise Start() methodumuzun içine GetComponent ile Animatorumuzu çağırıp “anim” değişkenimize atayalım.. Bknz: Resim4
anim = gameObject.GetComponent<Animator>();
X ve Y değerlerini bir gözden geçirelim..
X değeri “Horizontal” yani yatay ekseni gösteriyor..
Y değeri “Vertical” yani dikey ekseni gösteriyor..
Koordinat sistemini düşündüğümüzda, bir 0(sıfır yani orjin) noktası vardır..
0 noktasının sağ veya üst tarafı pozitif(+), sol veya alt tarafı negatif(-) değerler alıyordu..
Şimdi gelelim kodumuza,
İf Else yapısını da kodumuzun üzerinden anlatalım..
Bknz: Resim5
if (x > 0) {
anim.Play ("WalkAnimation");
}
if (x < 0) {
anim.Play ("WalkAnimation");
}
if (x == 0) {
anim.Play ("IdleAnimation");
}
Evet oyunumuzu çalıştırdığımız da sağa veya sola hareket ettiğimiz de yürüme animasyonu, hareket etmediğimiz de ise bekleme animasyonumuz çalışıyor..
Yalnız sola hareket ederken karakterimiz sola dönmüyor sadece animasyon çalışıyor..
Karakterimizin yönünü değiştirmemiz için gereken kod.. Bknz: Resim6
transform.localScale = new Vector2 (-1,1);
Oyunumuzu tekrar çalıştırdığımız da herhangi bir sıkıntımızın olmadığını görüyoruz..
If else yapısına bir göz atalım
If ingilizce de “Eğer” anlamı taşır, yani bir koşul ifade eder..
Örneğin: Eğer şu şu olursa, şunlar şunlar olsun gibi..
Kodumuza tekrar bakacak olursak
if (x > 0) {
anim.Play ("WalkAnimation");
}
yani If (Koşul) {
//Koşul sağlanırsa işlenecek kod
}
Bizim koşulumuz X , 0’dan büyük ise animasyonu oynat,
Yukarı da koordinat sisteminden bahsettik, X , 0’dan büyük yahut küçük olduğu zaman karakter hareket ediyor demektir..
Bu yüzden dedik ki Eğer “x > 0” veya “x < 0” ise anim.Play("AnimasyonAdı");
Else ise geri kalan diğer durumlarda demektir..
Yani If ile koşullarımızı belirledik, bu durumlar haricin de başka herhangi bir şey ile karşılarsan bunları yap demektir.. Bknz: Resim7
Evet bir dersimizin daha sonuna geldik..
Daha önce bir programlama dili ile çalışmışlığınız yok ise, bu konular da sıkıntı çekebilirsiniz..
Elimden geldiğince açıklayıcı bir şekilde anlatmaya çalışıyorum, size de pes etmek yok 🙂
Takıldığınız sormak istediğiniz herhangi bir konu da yorum yazabilirsiniz..